Відповіді:
Вам потрібна додаткова бібліотека для висвітлення коду, і ви будете роздуті тим, наскільки потужним і легким є Стамбул . Спробуйте виконати наступне, після того як ви пройдете тести на мокко:
npm install nyc
Тепер просто поставте команду nyc перед наявною тестовою командою, наприклад:
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
є канонічним ярликом до папки Bin ./node_modules/.bin/
і istanbul/lib/cli.js
його псевдонім istanbul
. Тож ось коротша команда:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
Зараз ( 2020 р. ) Кращим способом використання istanbul є його "сучасний інтерфейс командного рядка" 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.js
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
бігати mocha -R html-cov > coverage.html
istanbul cover node_modules/mocha/bin/_mocha
.