Нет покрытия нью-йорк мокко
Я просто не могу понять, почему тестовое покрытие равно 0, хотя тестовый пример проходит. У меня есть скрипт в package.json:
"nyctest": "node --max_old_space_size=4096 node_modules/nyc/bin/nyc.js --reporter=text mocha"
Когда я бегу npm run nyctest
Мой тестовый пропуск, но охват составляет 0 процентов.
Ниже приводится тест и файл, который он тестирует:
test.js
var chai = require('chai');
var sinon = require('sinon');
var sinonChai = require('sinon-chai');
chai.should();
chai.use(sinonChai);
var application = require('../../../src/main/resources/static/js/components/app.js');
describe('sample return testing', function(){
it('should return true', function(){
application.sample.returnValue().should.equal(true);
})
});
app.js
const sample = {
returnValue: function () {
return true;
}
};
module.exports = {sample};
Ценю любую помощь.
6 ответов
Я столкнулся с этой проблемой при использовании "type": "module" (ES Modules) с TypeScript.
Возникла проблема с загрузчиком nyc (Стамбул) для модулей ESM. Рекомендуемое решение - отказаться от nyc и использовать собственное покрытие, теперь встроенное в Node 13 и выше: c8.
К августу 2020 года: две вещи:
- Вам нужно добавить параметр de --all.
- Предпочтительно использовать
.nycrc
файл, чтобы не было большой командной строки в вашемpackage.json
следующим образом:
Минимальный .nycrc
файл:
{
"all": true,
"include": [
"test/**.js"
],
"exclude": [
]
}
У меня была похожая проблема. Я думаю, что вам нужно изменить команду nyctest с флагом --all.
Моя команда выглядит следующим образом:
"nyctest": "nyc --reporter = lcov --reporter = text-lcov --all -x \"./ node_modules /\ "-x \"./ охват /\ "проверка покрытия - строки 10 - работает 90 npm run unittest"
Так что с флагом --all все файлы выбираются:)
В моем случае проблема заключалась в том, что .nyrc
конфигурация содержала "instrument": false
. Удаление этого привело к возвращению отчетов о покрытии.
TL;DR: попробуйте в своей конфигурации nyc.
Основная причина проблемы заключается в том, как файлы обрабатываются. Он делает это, наблюдая за своим дочерним процессом и отслеживая, какой код запускается. Вот почему вы проходите
mocha
к
Вы можете проверить, так ли это, добавив
--show-process-tree
флаг
nyc
, как описано в документации NYC . Если вы видите «nyc» внизу вывода, но ничего не видите под ним, значит, это ваша проблема.
В примечании выше объясняется, как обойти это (
useSpawnWrap: true
), но что его вызывает? Этот комментарий к проблеме GitHub частично объясняет, что происходит, и этот комментарий объясняет, как
pnpm
сломал эту способность. В моем случае я использую
nvm
, хотя я уверен, что это та же основная причина, что-то влияет либо на путь, либо на
process.env.NODE_OPTIONS
переменная окружающей среды.
Я надеюсь, что это более подробное объяснение поможет вам устранять подобные проблемы в будущем.
Мой случай немного отличается,
Я установил mocha
глобально и когда nyc
ссылаясь на мокко глобально, он ничего не показывает в отчете о покрытии.
Я получил результат при беге
nyc node_modules/.bin/mocha
Это известная проблема, обратитесь сюда https://github.com/istanbuljs/nyc/issues/1029.