Подтвердить что ты не робот

Как получить информацию о покрытии кода с помощью Node, Mocha

Недавно я начал получать модульное тестирование для моих проектов 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

Итак, мой вопрос будет таким: учитывая текущую структуру приложения и среду, как я могу правильно сообщать о моем покрытии кода с помощью Стамбула (или другого инструмента)?


TL; DR

Как я могу сообщить о моем охвате кода с помощью Node, Mocha и моей текущей структуры приложения?


ИЗМЕНИТЬ

Чтобы быть ясным, Mocha корректно запускает тесты в этом текущем состоянии. Получение отчета о покрытии кода - это то, с чем я борюсь за работу.

EDIT 2

Я получил уведомление о том, что еще один вопрос, возможно, уже ответил на мой вопрос. Он предложил только установить Стамбул и запустить команду cover, которую я уже сделал. В другом предложении рекомендуется запустить тестовые команды с помощью _mocha, что из некоторых исследований, которые я сделал, - это предотвращение проглатывания в Стамбуле флагов, предназначенных для Mocha, и не требуется в более новых версиях Mocha.

4b9b3361

Ответ 1

Вам следует попробовать запустить тест следующим образом:

istanbul cover _mocha test/**/*.js

Ответ 2

Вам нужен файл .istanbul.yml. Я не вижу никакой ссылки на нее - трудно сказать, не зная ее содержимого. Я не думаю, что достаточно информации для решения этого вопроса. Я обновлю этот ответ, если вы обновите вопрос, особенно до того, как истечет срок действия, eh?

Ответ 3

Вот как я получаю покрытие кода во всех моих проектах js (выглядит так, как у Sachacr):

istanbul cover _mocha -- -R spec --recursive test