Я использую Mocha для тестирования моего приложения NodeJS. Я не могу понять, как использовать функцию покрытия кода. Я попытался найти его, но не нашел подходящего учебника. Пожалуйста помоги.
Я использую Mocha для тестирования моего приложения NodeJS. Я не могу понять, как использовать функцию покрытия кода. Я попытался найти его, но не нашел подходящего учебника. Пожалуйста помоги.
Ответы:
Вам нужна дополнительная библиотека для покрытия кода, и вы будете поражены тем, насколько мощным и простым является Стамбул . Попробуйте выполнить следующее, после того как пройдете тесты мокко:
npm install nyc
Теперь просто поместите команду nyc перед существующей тестовой командой, например:
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
является каноническим ярлыком для ./node_modules/.bin/
и istanbul/lib/cli.js
имеет псевдоним istanbul
в папке bin. Итак, вот более короткая команда:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
Теперь ( 2020 г. ) предпочтительным способом использования Стамбула является его «современный интерфейс командной строки» nyc .
Во-первых, установите его в свой проект с
npm i nyc --save-dev
Затем, если у вас есть проект на основе npm, просто измените тестовый скрипт внутри scripts
объекта вашего файла package.json, чтобы выполнить покрытие кода ваших тестов mocha :
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
Теперь запустите ваши тесты
npm test
и вы увидите такую таблицу в консоли сразу после вывода результатов тестов:
Просто используйте
nyc --reporter=html
вместо text
. Теперь он выдаст отчет внутри ./coverage/index.html
.
Стамбул поддерживает широкий спектр форматов отчетов. Просто посмотрите на его библиотеку отчетов, чтобы найти наиболее полезную для вас. Просто добавьте --reporter=REPORTER_NAME
опцию для каждого формата, который вы хотите. Например, с
nyc --reporter=html --reporter=text
у вас будет и консоль, и html отчет.
Просто добавьте другой скрипт в ваш package.json
и оставьте test
скрипт только с вашим бегуном (например, мокко):
{
"scripts": {
"test": "mocha",
"test-with-coverage": "nyc --reporter=text mocha"
}
}
Теперь запустите этот пользовательский скрипт
npm run test-with-coverage
запускать тесты с покрытием кода.
Сбой, если общий охват кода ниже 90%:
nyc --check-coverage --lines 90
Ошибка, если охват кода хотя бы одного файла ниже 90%:
nyc --check-coverage --lines 90 --per-file
--reporter=html
включен, но html-файл всегда пуст, ничего не показано о непокрытых блоках или% покрытия и т. Д., Только заголовки таблицы
Blanket.js тоже отлично работает.
npm install --save-dev blanket
перед вашим test / tests.js
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
бегать mocha -R html-cov > coverage.html
istanbul cover node_modules/mocha/bin/_mocha
.