Как да получите отчета за покритие на кода с помощта на Jest?

Има ли начин да има покритие на кода в рамката за тестване на JavaScript Jest, която е изградена върху Jasmine?

Вътрешната рамка не отпечатва кода покритие получава. Опитах също да използвам Истанбул, одеало и JSCover, но нито едно от тях работа.


person Alex Palcuie    schedule 18.07.2014    source източник
comment
Не се шегувам много, но виждали ли сте config. collectCoverage?   -  person Ciro Costa    schedule 24.08.2014


Отговори (11)


Когато използвам Jest 21.2.1, мога да видя покритието на кода в командния ред и да създам директория за покритие, като предам --coverage на скрипта Jest. По-долу са дадени някои примери:

Склонен съм да инсталирам Jest локално, в който случай командата може да изглежда така:

npx jest --coverage

Предполагам (въпреки че не съм потвърдил), че това също ще работи, ако инсталирам Jest глобално:

jest --coverage

Много редките документи са тук

Когато навигирах в директорията 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-въпрос: stackoverflow. com/questions/60512167/ - person Stefan; 03.03.2020
comment
@ShanikaEdiriweera jestjs.io/docs/en/cli.html#--collectcoveragefromglob - person marcellothearcane; 07.05.2020

АКТУАЛИЗАЦИЯ: 20.07.2018 г. - Добавени връзки и актуализирано име за coverageReporters.

АКТУАЛИЗАЦИЯ: 14.08.2017 г. - Този отговор е напълно остарял. Просто погледнете документите на Jest сега. Те имат официална поддръжка и документация за това как да направят това.

@hankhsiao има разклонено репо, където Истанбул работи с Jest. Добавете това към вашите зависимости от разработчици

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

Също така се уверете, че покритието е активирано във вашия запис в package.json jest и можете също да посочите формати, които искате. (HTML-ът е доста лош).

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

Вижте документацията на Jest за coverageReporters (по подразбиране е ["json", "lcov", "text"])

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

person Adrian Adkison    schedule 15.12.2014
comment
Опцията coverageFormats е премахната - изглежда, че 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
не работи, намерена е неизвестна опция coverageFormats със стойност [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
Този отговор прави много предположения за състоянието на ones 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. FYI, ако инсталирате от npm, може да не получите най-новата версия; така че първо опитайте GitHub и се уверете, че покритието е това, от което се нуждаете.

person Winters    schedule 06.11.2014
comment
Въпросът беше как да получите покритие на кода за 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, което не работи, това може да се дължи също и на това, че coverageReporters са активирани без добавени „text“ или „text-summary“. От документите: „Забележка: Задаването на тази опция презаписва стойностите по подразбиране. Добавете „текст“ или „текст-резюме“, за да видите обобщение на покритието в изхода на конзолата.“ Източник

person thebkr7    schedule 10.06.2019

Конфигурирайте вашия файл package.json

"тест": "шега --покритие",

въведете описание на изображението тук

Сега стартирайте:

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. Отидете до вашето репо и потърсете coverage/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, yarn предава всички аргументи на шега. - person Angel Fraga Parodi; 20.01.2021

Опитайте Chutzpah. Току що го използвах. И писах в блог за това как да се интегрирам във Visual Studio.

Ето как направих кодово покритие с Chutzpah: Кодово покритие с 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