istanbul с mocha не генерирует отчет о покрытии, когда тестовый пример занимает больше времени

Я тестирую свой js-файл, используя mocha. Некоторым тестовым случаям требуется время для разрешения ответа, поэтому я использовал тайм-аут. Полная команда выглядит как

istanbul обложка _mocha test / sol-verifier.js - --timeout 300000

Проблема в том, что при таком покрытии я не получаю отчет о покрытии, он только успешно запускает тестовые наборы и останавливается (не завершается). Как я могу это решить?

Мой код находится в node.js, и он не создает никакого сервера.

Также, когда я снимаю флаг --timeout и закомментирую тестовые случаи, которые требуют больше времени. Он отлично работает и генерирует отчет о покрытии.

Согласно моим выводам, проблема не во флаге --timeout, отчет не создается, если для решения тестового сценария требуется больше времени, чем обычно.


person A.K.    schedule 19.12.2018    source источник


Ответы (1)


Вы можете добавить done аргумент к функциям вашего набора тестов и вызывать done() в конце каждой из ваших тестовых функций:

it('test expectation', function(done) {
    // test asynchronous code
    // call done() to terminate test and proceed to the next test
    done();
}

Или попробуйте запустить тесты с флагом --exit на mocha:

istanbul cover _mocha --exit test/sol-verifier.js -- --timeout 300000

Согласно документам:

Чтобы избежать ложных срабатываний и поощрять более эффективные методы тестирования, Mocha больше не будет автоматически убивать себя через process.exit (), когда он считает, что должен быть запущен.

Если процесс мокко все еще жив после того, как ваши тесты кажутся завершенными, значит, ваши тесты запланировали что-то, что должно произойти (асинхронно), и не очистили себя должным образом. Вы оставили розетку открытой?

Установите флаг --exit, чтобы использовать поведение до версии 4.

person Elliot B.    schedule 19.12.2018