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