Я использую Mocha для тестирования моего приложения NodeJS. Я не могу понять, как использовать функцию покрытия кода. Я пробовал искать его, но не нашел подходящего учебника. Пожалуйста, помогите.
Покрытие кода с помощью Mocha
Ответ 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
и вы увидите таблицу, подобную этой в консоли, сразу после вывода ваших тестов:
Настройка
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