Нет покрытия нью-йорк мокко

Я просто не могу понять, почему тестовое покрытие равно 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.

https://github.com/bcoe/c8

К августу 2020 года: две вещи:

  1. Вам нужно добавить параметр de --all.
  2. Предпочтительно использовать .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.

Другие вопросы по тегам