Подтвердить что ты не робот

Покрытие кода с помощью Mocha

Я использую Mocha для тестирования моего приложения NodeJS. Я не могу понять, как использовать функцию покрытия кода. Я пробовал искать его, но не нашел подходящего учебника. Пожалуйста, помогите.

4b9b3361

Ответ 1

Вам нужна дополнительная библиотека для покрытия кода, и вы будете потрясены тем, насколько мощным и легким istanbul. Попробуйте следующее, после того как вы пройдете тесты мокко:

npm install nyc

Теперь просто поместите команду nyc перед существующей тестовой командой, например:

{
  "scripts": {
    "test": "nyc mocha"
  }
}

Ответ 2

Blanket.js отлично работает.

npm install --save-dev blanket

перед вашим тестом /tests.js

require('blanket')({
    pattern: function (filename) {
        return !/node_modules/.test(filename);
    }
});

запустить mocha -R html-cov > coverage.html

Ответ 3

Теперь (2017) предпочтительный способ использования istanbul - через "современный интерфейс командной строки" nyc.

Настройка

Сначала установите его в свой проект с помощью

npm i nyc --save-dev

Затем, если у вас есть проект на основе npm, просто измените тест script внутри объекта scripts вашего package.json файл для выполнения покрытия кода вашего теста mocha:

{
  "scripts": {
    "test": "nyc --reporter=text mocha"
  }
}

Run

Теперь запустите свои тесты

npm test

и вы увидите таблицу, подобную этой в консоли, сразу после вывода ваших тестов:

Покрытие кода в Nik Mocha в Стамбуле

Настройка

Html report

Просто используйте

nyc --reporter=html

вместо text. Теперь он будет выводить отчет внутри ./coverage/index.html.

Форматы отчетов

Стамбул поддерживает широкий диапазон форматов отчетов. Просто посмотрите на отчетную библиотеку, чтобы найти наиболее полезную для вас. Просто добавьте параметр --reporter=REPORTER_NAME для каждого формата. Например, при

nyc --reporter=html --reporter=text

у вас будут как консоль, так и html-отчет.

Не запускайте покрытие с помощью теста npm

Просто добавьте еще script в package.json и оставьте test script только вашим тестовым бегуном (например, mocha):

{
  "scripts": {
    "test": "mocha",
    "test-with-coverage": "nyc --reporter=text mocha"
  }
}

Теперь запустите этот пользовательский script

npm run test-with-coverage

для запуска тестов с охватом кода.

Силовой тест не работает, если уровень покрытия кода низкий

Сбой, если общее покрытие кода ниже 90%:

nyc --check-coverage --lines 90 

Не удалось, если покрытие кода по крайней мере одного файла ниже 90%:

nyc --check-coverage --lines 90 --per-file