Покрытие кода для шутки
Есть ли способ получить покрытие кода в JavaScript jest Testing framework, который построен поверх Jasmine?
Внутренняя структуране выводит на печать покрытие кода, которое она получает. Я также пробовал использовать Стамбул, blanket и JSCover, но ни один из них не работает.
5 ответов:
Обновление: 20.07.2018-добавлены ссылки и обновлено имя для coverageReporters.
Обновление: 14.08.2017 - этот ответ полностью устарел. Просто посмотрите на эти шутливые документы сейчас. У них есть официальная поддержка и документация о том, как это сделать.@hankhsiao получил раздвоенное РЕПО, где Стамбул работает с Jest. Добавьте это к вашим зависимостям dev
"devDependencies": { "jest-cli": "git://github.com/hankhsiao/jest.git" }
Также убедитесь, что покрытие включено в вашем пакете.JSON jest запись, и вы также можете указать форматы, которые вы хотите. (формат HTML это довольно плохая задница).
"jest": { "collectCoverage": true, "coverageReporters": ["json", "html"], }
Смотрите Jest documentation для coveragereports (по умолчанию
["json", "lcov", "text"]
)Или добавить
--coverage
, Когда вы вызываете шутку.
При использовании Jest 21.2.1 я могу видеть покрытие кода в командной строке и создать каталог покрытия, передав --coverage скрипту jest. Ниже приведены некоторые примеры.
Я обычно устанавливаю Jest локально, и в этом случае команда может выглядеть следующим образом:
Node_modules/.bin/jest -- покрытие
Я предполагаю, но не подтвердил, что это также сработает, если я установлю Jest глобально:
Шутка -- покрытие
Очень редкие документы здесь
Когда я вошел в каталогcoverage/lcov-report , я нашел индекс .html файл, который можно загрузить в браузер. Он включал информацию, напечатанную в командной строке, а также дополнительную информацию и некоторые графические выходные данные.
Хорошо, проигнорируйте мой предыдущий ответ, поскольку кто-то сказал мне, что это не решает проблему.
Новый Ответ:
1) Проверьте последнюю шутку (в 0.22): https://github.com/facebook/jest
2) команда facebook помещает Стамбул как часть отчета о покрытии, и вы можете использовать его напрямую.3) после выполнения jest, вы можете получить отчет покрытия на консоли и в корневой папке, установленной jest, вы найдете отчет покрытия в json и html формат.
4) к вашему сведению, если вы устанавливаете из npm, вы можете не получить последнюю версию; поэтому сначала попробуйте github и убедитесь, что покрытие-это то, что вам нужно.
Старый Ответ:
Получил ту же самую проблему. Короткий ответ:
Istanbul
иJest
не работают вместе.Проверьте следующие страницы для получения более подробной информации:
Https://github.com/facebook/jest/issues/101
Jest использует contextify, который запускает js-скрипты в контексте V8 в машинный код, таким образом, обходит все стамбульские require и vm.runInThisContext крючки. Так что Стамбульская крышка не будет работать, так как стандартный крючковый узел.функции js не используются, и предварительное инструментирование файлов также не поможет, так как каждый тест выполняется в своей собственной песочнице, и нет глобального, в котором можно спрятать объект покрытия.
@Ciro Costa:
config.collectCoverage
не работает, так как это функция "TODO". Пожалуйста, проверьте исходный код.
У меня была та же проблема, и я исправил ее, как показано ниже.
- установить пряжу
npm install --save-dev yarn
- установить jest-cli
npm install --save-dev jest-cli
- Добавьте это в пакет.json
"jest-coverage": "yarn run jest -- --coverage"
После написания тестов выполните команду npm run jest-coverage. Это создаст папку покрытия в корневом каталоге. /покрытия/данные-индекс/.html имеет представление html покрытия кода.
Счастливого кодирования!
Попробуйте Chutzpah. Я только что использовал его. И я написал об этом в блоге о том, как интегрировать в Visual Studio.
Вот как я сделал покрытие кода с помощью Chutzpah: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/