Ошибка покрытия кода, если для кода не существует тестов

У меня есть простое приложение Node JS, и я использую Istanbul с Mocha для создания отчетов о покрытии кода. Это работает нормально.

Если я пишу новую функцию, но не создаю для нее никаких тестов (или даже создаю тестовый файл), можно ли это проверить?

Моя конечная цель состоит в том, чтобы любой код, который вообще не имеет тестов, был подхвачен нашим процессом непрерывной интеграции и чтобы он не прошел эту сборку.

Это возможно?


person Jon Hunter    schedule 16.05.2017    source источник


Ответы (2)


Один из способов добиться этого — использовать покрытие кода.

"check-coverage": "istanbul check-coverage --root coverage --lines 98 --functions 98 --statements 98 --branches 98"

Просто добавьте это в свой файл package.json, при необходимости измените пороговое значение. Если код написан, но нет теста, то покрытие снизится.

person Niraj Chauhan    schedule 16.05.2017
comment
Привет. Спасибо за Ваш ответ. Я уже использую эту команду в своем package.json, но, похоже, она не подхватывает файл, который у меня есть без тестов. Кроме того, прежде чем я смогу запустить эту команду, кажется, мне нужно сначала запустить команду cover, чтобы сгенерировать файл coverage.json? - person Jon Hunter; 16.05.2017

Я не уверен, что это правильный способ решения проблемы, но сначала запустив команду cover и добавив параметр --include-all-sources, это затем сообщило о любом коде без тестового файла и добавило их в сгенерированный файл coverage.json.

Тогда запуск check-coverage завершится ошибкой, что мне и нужно. В моем процессе CI я сначала запускал cover, затем check-coverage

Лично я нахожу документацию по Стамбулу немного запутанной/неясной, поэтому сначала я этого не увидел!

person Jon Hunter    schedule 16.05.2017