Ответ 1
Вам следует попробовать запустить тест следующим образом:
istanbul cover _mocha test/**/*.js
Недавно я начал получать модульное тестирование для моих проектов Node с помощью Mocha. До сих пор все хорошо, и я обнаружил, что мой код значительно улучшился теперь, когда я размышляю обо всех углах, которые можно охватить в моих тестах.
Теперь я хотел бы поделиться своим опытом с остальной частью моей команды и получить их с собственными тестами. Часть информации, которую я хотел бы поделиться, - это часть моего кода.
Ниже приведен образец моей структуры приложения, который я разделял на разные компоненты или модули. Чтобы продвигать повторное использование, я стараюсь, чтобы все зависимости были минимальными и изолированы от папки компонентов. Это включает в себя сохранение тестов отдельно, а не по умолчанию test/
в корне проекта.
| app/
| - component/
| -- index.js
| -- test/
| ---- index.js
В настоящее время мой package.json
выглядит следующим образом. Я играю с Istanbul, но я никоим образом не привязан к нему. Я также попытался использовать Blanket с аналогичными уровнями успеха.
{
"scripts": {
"test": "clear && mocha app/ app/**/test/*.js",
"test-cov": "clear && istanbul cover npm test"
}
Если я запустил команду test-cov
, так как я получил следующую ошибку из Стамбула (что не помогает):
No coverage information was collected, exit without writing coverage information
Итак, мой вопрос будет таким: учитывая текущую структуру приложения и среду, как я могу правильно сообщать о моем покрытии кода с помощью Стамбула (или другого инструмента)?
Как я могу сообщить о моем охвате кода с помощью Node, Mocha и моей текущей структуры приложения?
Чтобы быть ясным, Mocha корректно запускает тесты в этом текущем состоянии. Получение отчета о покрытии кода - это то, с чем я борюсь за работу.
Я получил уведомление о том, что еще один вопрос, возможно, уже ответил на мой вопрос. Он предложил только установить Стамбул и запустить команду cover
, которую я уже сделал. В другом предложении рекомендуется запустить тестовые команды с помощью _mocha
, что из некоторых исследований, которые я сделал, - это предотвращение проглатывания в Стамбуле флагов, предназначенных для Mocha, и не требуется в более новых версиях Mocha.
Вам следует попробовать запустить тест следующим образом:
istanbul cover _mocha test/**/*.js
Вам нужен файл .istanbul.yml
. Я не вижу никакой ссылки на нее - трудно сказать, не зная ее содержимого.
Я не думаю, что достаточно информации для решения этого вопроса. Я обновлю этот ответ, если вы обновите вопрос, особенно до того, как истечет срок действия, eh?
Вот как я получаю покрытие кода во всех моих проектах js (выглядит так, как у Sachacr):
istanbul cover _mocha -- -R spec --recursive test