2016-08-18 13 views
2

edit: несколько месяцев спустя я полностью перешел в лабораторию, он отлично работает, включая освещение. Возможно, в то время, когда я писал, у этой Лаборатории не было хорошего инструмента покрытия.Как мне добраться до Стамбула, чтобы сообщить о покрытии тестов Lab/Hapi.js?

Я получил это раньше. Работала этим утром. Внезапно это не так.

Испытания проводятся в dist/test/unit.js. 15 тестов, которые покрывают 80,29% кода (на основе отчетов о покрытии Lab). Но мы настроены использовать Стамбул с Sonar, поэтому мне нужно снова заставить его работать со Стамбулом. В любом случае, я предпочитаю отчеты Стамбула.

Я бегу испытания с:

./node_modules/.bin/istanbul cover ./node_modules/.bin/lab -- -l -e development -r lcov dist/test

Испытания выполняются. Все проходят. Выход на экран представляет собой отчет о покрытии:

... 
DA:801,1 
DA:802,1 
DA:803,1 
DA:804,1 
DA:805,1 
DA:806,1 
DA:807,1 
LF:774 
LH:738 
end_of_record 
No coverage information was collected, exit without writing coverage information 

Почему это говорит мне, что никакого покрытия не было собрано? Как мне заставить эти два инструмента снова играть вместе?

Избавление от -r lcov на самом деле не помогает. В ./coverage (папка по умолчанию) нет выхода в любом случае. Я могу заставить его по трубопроводам, но когда я запускаю этот вывод в istanbul (опция отчета), я получаю Error: Invalid report format [coverage/cover.info]

Похоже, что отчет о покрытии, который создается, недействителен. Как я узнаю?

ответ

0

Резолюция по этому вопросу не очень удовлетворительна. Я проверил некоторый старый код и он работал, так что я начал с одного тестом и пропустил остаток и использовать эту команду:

./node_modules/.bin/istanbul cover ./node_modules/.bin/lab -- -l -e development ./dist/test/unit.js

Затем я удалил пропуск из тестов один за другим. В итоге отчет о покрытии работал со всеми тестами. Не знаю, какова фактическая проблема, которая мешала Стамбулу собирать информацию о покрытии вчера.

Единственное, что я могу придумать, это то, что я удалил rm -rf coverage из моей команды npm (это было: перекрыть, удалить покрытие, запустить покрытие, открыть отчет о покрытии, в одной команде npm, разделенной точкой с запятой). Возможно, это блокировало Стамбул от написания артефактов покрытия?