2015-11-30 8 views
2

У меня есть setup istanbul, чтобы проверить покрытие кода для моего apis в узле. Я смущен, если у меня возникла вся идея, если покрытие теста будет неправильным. У меня есть каталог sturcture в -app, содержащего -api -controllers -моделей -тесту -api_test.jsistanbul with mocha, nodejs всегда дает такое же покрытие

работает istanbul cover _mocha запускает все тестовые случаи в api_test.js и возвращает охват как отчетности: 46,55% (27/58) Отрасли: 0% (0/18) Функции: 0% (0/13) Lines: 48,21% (27/56)

Но потом удалить кучу тестов , повторный istanbul по-прежнему остается неизменным. Согласно моему пониманию инструмента, он должен давать мне статистику в соответствии с тем, что все строки кода мои тестовые примеры привели к выполнению SO, которые должны технически сократить охват тестирования, когда я запускаю меньшее количество тестов. Также в моем отчете html содержатся только статистические данные о состоянии некоторых моделей (даже не все). Таким образом, это добавляет путаницы, правильно ли я настроил набор тестов и istanbul. Любая помощь будет оценена по мере того, как я новичок в узле.

+0

У вас есть мокка и истанбуль, установленные локально или глобально? –

+0

Что произойдет, если вы запустите instanbul против пустого набора тестов, показывает ли он 0% покрытия? Я не думаю, что его необоснованно, что удаление пары тестов все равно приведет к тому же охвату. Если вы выберете конкретный модуль и удалите все тесты, ссылающиеся на этот модуль (необходимо убедиться, что этот модуль не импортирован/используется другими модулями, которые имеют тесты) проведет тестирование результатов покрытия вниз? – dm03514

+0

0 Передача (1 мс) @ dm03514 Я по-прежнему получаю одинаковые показатели покрытия. –

ответ

0

istanbul предназначен для покрытия кода исходного кода. mocha содержит тестовые примеры. У вас может быть один тестовый пример, на который приходится 100% исходного кода, а istanbul будет сообщать о 100%. Вы можете добавить больше тестовых примеров (для разных путей, случаев и т. Д.), Но istanbul сообщит об этом, потому что первый тестовый пример был на 100%.

Я думаю, что у вас все правильно настроено. В вашем вопросе вы достигаете определенных уровней охвата, просто запустив свои тесты, которые, в свою очередь, загружают исходные файлы. Имея один тестовый пример или 100, исходные файлы все еще обрабатываются при загрузке. Вы знаете, что не слишком много испытываете, когда видите такие вещи, как этот Branches : 0% (0/18) Functions : 0% (0/13), но все еще имеют покрытие линии.

Стамбул изменит свои результаты, когда ваши тестовые примеры проведут больше тестируемого исходного кода.

-1

@clay Спасибо, это помогло. Итак, теперь я понял, что в моем случае у меня есть тесты мокко, которые просто называют конечные точки api и получают результаты. Таким образом, практически не загружаются исходные файлы при запуске тестовых примеров, и поэтому покрытие кода практически никогда не изменяется. Я решил это, включив файлы, которые мне нужно покрыть поверх моих тестовых примеров. Это было бы просто манекеном, требуемым только для загрузки моих исходных файлов для покрытия. Я могу потребовать файлы или папки, и все эти исходные файлы будут просмотрены, а когда они будут добавлены в отчет. Надеюсь, это будет полезно для кого-то, кто сталкивается с подобными путаницами.