Как получить отчет о покрытии кода с помощью Jest?

Есть ли способ обеспечить покрытие кода в среде тестирования JavaScript Jest, которая построена на основе Jasmine?

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


person Alex Palcuie    schedule 18.07.2014    source источник
comment
Я не очень люблю шутить, но видели ли вы конфигурацию ? collectCoverage?   -  person Ciro Costa    schedule 24.08.2014


Ответы (11)


При использовании Jest 21.2.1 я могу увидеть покрытие кода в командной строке и создать каталог покрытия, передав --coverage сценарию Jest. Вот несколько примеров:

Я обычно устанавливаю Jest локально, и в этом случае команда может выглядеть так:

npx jest --coverage

Я предполагаю (хотя и не подтверждал), что это также будет работать, если я установлю Jest глобально:

jest --coverage

Очень немногочисленные документы находятся здесь

Когда я перешел в каталог покрытие / lcov-report, я обнаружил файл index.html, который можно было загрузить в браузер. Он включал информацию, напечатанную в командной строке, а также дополнительную информацию и некоторые графические данные.

person ccalvert    schedule 24.10.2017
comment
Никогда не используйте глобальные модули. Чтобы обеспечить согласованность версий и наличие пакета, всегда используйте исполняемый файл в node_modules через ./node_modules/.bin/jest --coverage. Пока пакет назван в package.json, вы можете гарантировать выполнение с той версией шутки, которую ожидаете. - person taystack; 28.01.2019
comment
Как получить шутливое освещение только для измененных файлов? - person Shanika Ediriweera; 27.11.2019
comment
Есть ли простой способ не пройти тесты, если охват ниже определенного предела? Соответствующий SO-вопрос: https://stackoverflow.com/questions/60512167/how-to-check-jest-coverage-in-console - person Stefan; 03.03.2020

ОБНОВЛЕНИЕ: 20.07.2018 - Добавлены ссылки и обновлено название для репортеров.

ОБНОВЛЕНИЕ: 14.08.2017 - Этот ответ полностью устарел. Просто посмотрите документацию Jest. У них есть официальная поддержка и документация о том, как это сделать.

У @hankhsiao есть разветвленное репо, в котором Стамбул работает с Jest. Добавьте это в свои зависимости разработчика

 "devDependencies": {
     "jest-cli": "git://github.com/hankhsiao/jest.git"
 }

Также убедитесь, что в вашей записи шутки package.json включено покрытие, и вы также можете указать нужные форматы. (HTML - довольно плохая задница).

 "jest": {
     "collectCoverage": true,
     "coverageReporters": ["json", "html"],
 }

См. документацию Jest для extensionReporters (по умолчанию ["json", "lcov", "text"])

Или добавьте --coverage, когда вызываете шутку.

person Adrian Adkison    schedule 15.12.2014
comment
Опция extensionFormats была удалена - похоже, что json и html генерируются каждый раз. - person ; 01.03.2015
comment
Я использую опцию --coverage, но ничего другого не происходит. - person gbbr; 02.03.2015
comment
Он (сейчас) называется coverageReporters, а значение по умолчанию - ["json", "lcov", "text"]. См. facebook.github.io/jest/docs/ - person Karsten S.; 13.04.2017
comment
не работает, обнаружен неизвестный параметр охвата форматов со значением [json, html]. - person srghma; 12.08.2017

Январь 2019: версия Jest 23.6

Для тех, кто недавно изучал этот вопрос, особенно при тестировании с использованием npm или yarn напрямую

В настоящее время вам не нужно изменять параметры конфигурации

На официальном веб-сайте Jest вы можете сделать следующее для создания отчетов о покрытии:

1- Для npm:

Вы должны указать -- перед передачей --coverage аргумента Jest

npm test -- --coverage

если вы попытаетесь вызвать --coverage напрямую без --, это не сработает

2- Для пряжи:

Вы можете напрямую передать --coverage аргумент шутки

yarn test --coverage
person Ahmed Elkoussy    schedule 13.01.2019
comment
Как получить шутливое освещение только для измененных файлов? - person Shanika Ediriweera; 27.11.2019
comment
Изменилось с каких пор? Вероятно, вы захотите использовать для этого параметр --watch. - person koehn; 17.03.2020
comment
Этот ответ делает множество предположений о состоянии package.json. - person airtonix; 06.06.2020
comment
Это дает мне покрытие для файлов в папке / test. Определенно не то, что я искал: D - person Davor; 13.01.2021

  1. Проверьте последнюю версию Jest (v 0.22): https://github.com/facebook/jest

  2. Команда Facebook добавляет выходные данные покрытия кода Стамбул как часть отчета о покрытии и вы можете использовать его напрямую.

  3. После выполнения Jest вы можете получить отчет о покрытии в консоли, а в корневой папке, установленной Jest, вы найдете отчет о покрытии в формате JSON и HTML.

  4. К вашему сведению, если вы устанавливаете из npm, вы можете не получить последнюю версию; так что сначала попробуйте GitHub и убедитесь, что охват именно то, что вам нужно.

person Winters    schedule 06.11.2014
comment
Вопрос был в том, как получить покрытие кода для Jest. То, что Стамбул и Jest не работают вместе, может быть правдой, но это не ответ на вопрос. - person David Raab; 06.11.2014

Это работает для меня:

 "jest": {
    "collectCoverage": true,
    "coverageReporters": ["json", "html"]
  },
  "scripts": {
    "test": "jest  --coverage"
  },

Запустить:

yarn/npm test
person Deen John    schedule 07.11.2020

Если у вас возникли проблемы с неработающим параметром --coverage, это также может быть связано с тем, что у вас включены репортеры, не добавленные «text» или «text-summary». Из документов: «Примечание. Установка этого параметра перезаписывает значения по умолчанию. Добавьте« текст »или« текст-сводку », чтобы увидеть сводку покрытия в выходных данных консоли». Источник

person thebkr7    schedule 10.06.2019

Настройте файл package.json

"test": "jest --coverage",

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

Теперь запустите:

yarn test

Все тесты начнутся, и вы получите отчет. введите здесь описание изображения

person Saif Siddiqui    schedule 30.09.2019

Если вы используете структуру NestJS, вы можете получить покрытие кода с помощью этой команды:

npm run test:cov
person Francisco Cardoso    schedule 13.10.2020

Вы можете запустить npx jest --coverage - path / to / your / file.spec.js, чтобы показать покрытие для затронутых файлов.

Если вы хотите просмотреть это в браузере, вы можете сделать следующее:

  1. Зайдите в Браузер и CMD + O.
  2. Перейдите в свое репо и найдите покрытие / lcov-report / index.html

Тогда вы сможете наглядно увидеть все зоны покрытия. введите описание изображения здесь

Вы также можете обратиться к этой ссылке ниже для получения дополнительной информации https://dev.to/stevescruz/awesome-jest-tip-coverage-report-h5j

person Anusha Bhat    schedule 18.05.2021

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

  1. установить пряжу npm install --save-dev yarn
  2. установить jest-cli npm install --save-dev jest-cli
  3. добавьте это в package.json "jest-coverage": "yarn run jest -- --coverage"

После того, как вы напишете тесты, запустите команду npm run jest-coverage. Это создаст папку покрытия в корневом каталоге. /coverage/icov-report/index.html имеет HTML-представление покрытия кода.

person Laksh    schedule 08.02.2017
comment
Нет необходимости устанавливать пряжу. Yarn - это просто другой менеджер пакетов, чем NPM - person Black; 14.07.2017
comment
начальный -- это просто необходимо с помощью npm, пряжа передает все аргументы в jest. - person Angel Fraga Parodi; 20.01.2021

Попробуйте Chutzpah. Я только что его использовал. И я писал об этом в блоге о том, как интегрироваться в Visual Studio.

Вот как я сделал покрытие кода с помощью Chutzpah: Покрытие кода с наглостью

person francorobles    schedule 13.09.2014
comment
Chutzpath построен поверх Blanket, и я указал выше, что Jest с ним не работает. - person Alex Palcuie; 13.09.2014
comment
Интересно, потому что мой просто работал. francorobles.wordpress.com/2014/09/14/ < / а> - person francorobles; 14.09.2014
comment
Вы не используете Jest, который по умолчанию издевается над каждым require. - person Alex Palcuie; 14.09.2014