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


Есть ли способ получить покрытие кода в JavaScript jest Testing framework, который построен поверх Jasmine?

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

5 46

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". Пожалуйста, проверьте исходный код.

У меня была та же проблема, и я исправил ее, как показано ниже.

  1. установить пряжу npm install --save-dev yarn
  2. установить jest-cli npm install --save-dev jest-cli
  3. Добавьте это в пакет.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/