Стамбул рекомендует использовать nyc для проверки охвата кода. Он предлагает такой подход:
nyc mocha
После запуска этой команды мы получим отчет о покрытии. Но есть пара подводных камней.
Во-первых, по умолчанию mocha
ищет тесты в папке test
. Чтобы переопределить его, мы должны установить собственный путь в файле mocha.opts
следующим образом:
nyc mocha --opts ./mocha.opts
А mocha.opts
содержит такой код, например:
spec/unit/back-end/**/*.spec.js
Другая проблема в том, что по умолчанию nyc
проверяет покрытие только необходимых файлов, о чем ваш вопрос. Решение состоит в том, чтобы установить два параметра для nyc
(я запускаю тест как скрипт npm, поэтому я устанавливаю параметры в package.json). Вот код:
"nyc": {
"all": true,
"include": [
"routes/*.js",
"routes/**/*.js",
"models/*.js"
]
},
"scripts": {
"mocha": "nyc mocha --opts ./mocha.opts",
}
Еще один способ добиться этого — установить не include
, а exclude
опцию, чтобы исключить из проверки покрытия неподходящие файлы. Странно, но единственный вариант all
не работает, нужны include
или exclude
варианты. Вы можете получить больше информации о nyc
опциях через nyc --help
.
P.S. Я не знаю nyc
и mocha
глубоко и основываюсь только на собственном опыте.
person
Kirill Murashkin
schedule
29.01.2018