Покрытие кода для Jest
Есть ли способ охватить кодом в Javascript Jest Framework, который построен поверх Jasmine?
Внутренний фреймворк не позволяет распечатать покрытие кода, которое он получает. Я также пробовал использовать Istanbul, blanket и JSCover, но никто из них не работает.
Ответы
Ответ 1
При использовании Jest 21.2.1 я могу увидеть покрытие кода в командной строке и создать каталог покрытия, передав --coverage
скрипту Jest. Ниже приведены некоторые примеры:
Я склонен устанавливать Jest локально, и в этом случае команда может выглядеть так:
npx jest --coverage
Я предполагаю (хотя и не подтвердил), что это также будет работать, если я установлю Jest глобально:
jest --coverage
Очень редкие документы здесь
Когда я перешел в каталог cover/lcov-report, я нашел файл index.html, который можно было загрузить в браузер. Это включало информацию, напечатанную в командной строке, плюс дополнительную информацию и некоторый графический вывод.
Ответ 2
ОБНОВЛЕНИЕ: 20.07.2008 - Добавлены ссылки и обновлено имя для репортеров.
ОБНОВЛЕНИЕ: 14.08.2017 - Этот ответ полностью устарел. Просто посмотрите на документы Jest сейчас. У них есть официальная поддержка и документация о том, как это сделать.
У @hankhsiao есть раздвоенное репо, в котором Стамбул работает с Jest. Добавьте это в ваши зависимости dev
"devDependencies": {
"jest-cli": "git://github.com/hankhsiao/jest.git"
}
Также убедитесь, что в вашей записи jest package.json включено покрытие, и вы также можете указать нужные форматы. (HTML довольно плохая задница).
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"],
}
См шутя документацию для coverageReporters ( по умолчанию ["json", "lcov", "text"]
)
Или добавьте --coverage
когда вызываете шутку.
Ответ 3
Январь 2019: Jest версия 23.6
Для тех, кто недавно занимается этим вопросом, особенно если тестирование проводится напрямую с использованием npm или пряжи
В настоящее время вам не нужно менять параметры конфигурации
Согласно официальному веб-сайту Jest, вы можете сделать следующее для создания отчетов о покрытии:
1- Для нпм:
Вы должны поставить --
прежде чем передать аргумент --coverage шутка
npm test -- --coverage
если вы попытаетесь вызвать --coverage
напрямую без --
он не будет работать
2- Для пряжи:
Вы можете передать аргумент шутки --coverage
напрямую
yarn test --coverage
Ответ 4
Хорошо, проигнорируйте мой предыдущий ответ, поскольку кто-то сказал мне, что он не разрешил проблему.
Новый ответ:
1) Проверьте последнюю шутку (v 0.22): https://github.com/facebook/jest
2) Команда facebook помещает istanbul как часть отчета о покрытии, и вы можете использовать его напрямую.
3) После выполнения шутки вы можете получить отчет о покрытии на консоли и в корневой папке, установленной jest, вы найдете отчет о покрытии в формате json и html.
4) FYI, если вы устанавливаете с npm, вы можете не получить последнюю версию; поэтому сначала попробуйте github и убедитесь, что покрытие - это то, что вам нужно.
Старый ответ:
Получается та же проблема. Короткий ответ: Istanbul
и Jest
НЕ работают вместе.
Подробнее читайте на следующих страницах:
https://github.com/facebook/jest/issues/101
jest использует контекстуализацию, которая запускает сценарии JS в контексте V8 в собственном коде, таким образом минуя все требования istanbul и vm.runInThisContext. Таким образом, обложка istanbul не будет работать, поскольку стандартные функции node.js не используются, и файлы с предварительным набором инструментов не помогут ни с тех пор, как каждый тест запускается в собственной песочнице, и нет глобального, в котором можно было бы закрыть объект покрытия.
@Ciro Costa:
config.collectCoverage
НЕ работает, поскольку это функция TODO. Проверьте исходный код.
Ответ 5
Если у вас возникают проблемы с тем, что --coverage не работает, это также может быть связано с включением coverReporter без добавления "text" или "text-summary". Из документов: "Примечание: установка этого параметра перезаписывает значения по умолчанию. Добавьте" text "или" text-summary ", чтобы увидеть сводку покрытия в выводе консоли". Источник
Ответ 6
Настройте файл package.json
"test": "jest --coverage",
![enter image description here]()
Теперь запустите:
yarn test
Все тесты начнутся, и вы получите отчет.
![enter image description here]()
Ответ 7
У меня была такая же проблема, и я исправил ее, как показано ниже.
- установить пряжу
npm install --save-dev yarn
- установить jest-cli
npm install --save-dev jest-cli
- добавьте это в package.json
"jest-coverage": "yarn run jest -- --coverage"
После написания тестов запустите команду npm run jest-coverage. Это создаст папку покрытия в корневом каталоге. /coverage/icov -report/index.html имеет html-представление покрытия кода.
Счастливое кодирование!
Ответ 8
Попробуйте Chutzpah. Я только что использовал его. И я написал об этом в блоге о том, как интегрироваться в Visual Studio.
Вот как я сделал код с Chutzpah: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/