Я использую 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.