Почему в моем отчете о покрытии перекрытые строки выделены красным цветом?

Я могу использовать Karma, Tape и Istanbul (в частности, babel-istanbul), чтобы получить то, что выглядит как правильные отчеты о покрытии моей кодовой базы ES6, но отчет HTML показывает некоторые закрытые строки красным, хотя на полях показано, что они были рассмотрены несколько раз в наборе тестов:

введите здесь описание изображения

В частности, строка 13 показывает 4-кратное покрытие, что отражает только что написанный тест (который вызывает concat() четыре раза).

Почему эта линия красная?


person Roni Choudhury    schedule 04.03.2016    source источник
comment
привет, у меня такая же проблема, ты нашел причину?   -  person egig    schedule 06.04.2017
comment
К сожалению, я этого не сделал. Поскольку все было так сложно с неопределенными результатами, я в то время отказался от автоматического тестирования покрытия. Сейчас ситуация может быть лучше.   -  person Roni Choudhury    schedule 06.04.2017


Ответы (2)


Привет, я думаю, это потому, что в вашем файле мокко вам требуется lib, а не src.

вам следует требовать код src, а не скомпилированный код. и убедитесь, что в ваших сценариях package.json есть что-то вроде

{
"compile": "babel src/ -d lib/ --presets es2015 --source-map both",
 "test": "npm run compile && mocha",
"test-cov": "npm run compile && istanbul cover _mocha -- --opts ./test/mocha.opts"
}

src это ваш исходный код lib это скомпилированный код --source-map both может помочь Стамбулу отслеживать покрытие вашего исходного кода

в мокко.opts

--require babel-polyfill
--compilers js:babel-register
person Sabrina Luo    schedule 11.04.2016
comment
Я не уверен, что вы имеете в виду - я не использую Mocha, и я получаю покрытие для правильных строк в моем коде ES6 (через исходные карты, встроенные в скомпилированные файлы). Мой вопрос связан с тем, почему линии красные, но все же (правильно) сообщается, что они закрыты. - person Roni Choudhury; 19.04.2016
comment
вам нужна встроенная исходная карта, как в коде es6, так и в скомпилированном коде. и если вы не используете мокко, какую среду тестирования вы используете, можете ли вы указать? какой файл вам нужен в вашей тестовой среде? Код es6 или скомпилированный код? попробуйте потребовать код es6 в вашей тестовой среде - person Sabrina Luo; 25.04.2016
comment
Мои исходные карты встроены; вот почему я получаю результаты покрытия для кода ES6. Мой первоначальный вопрос описывает мою настройку: лента для написания тестов, карма для их запуска и babel-istanbul для покрытия. - person Roni Choudhury; 06.05.2016
comment
не могли бы вы также показать свой тестовый файл ??? ЭТО ДЕЛАЕТ НЕ ТОЛЬКО ИСХОДНАЯ КАРТА, НО ТАКЖЕ ОТНОСИТСЯ К ФАЙЛУ, КОТОРЫЙ ВАМ ТРЕБУЕТСЯ В ВАШЕМ ИСПЫТАТЕЛЬНОМ ФАЙЛЕ! - person Sabrina Luo; 09.05.2016

Я думаю, что происходит то, что строки запускаются количество раз, указанное на полях, но они красные, потому что какой-то аспект покрытия не затронут. Глядя на мой снимок экрана, я не уверен, что это может быть, например, для строки 13, но при наведении курсора мыши на красную строку появляется сообщение, объясняющее, что было пропущено.

person Roni Choudhury    schedule 06.05.2016