Подтвердить что ты не робот

Покрытие кода для Jest

Есть ли способ охватить кодом в Javascript Jest Framework, который построен поверх Jasmine?

Внутренний фреймворк не позволяет распечатать покрытие кода, которое он получает. Я также пробовал использовать Istanbul, blanket и JSCover, но никто из них не работает.

4b9b3361

Ответ 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-представление покрытия кода.

Счастливое кодирование!