Pokrycie kodu dla Jest


Odpowiedzi:


123

Używając Jest 21.2.1 , widzę pokrycie kodu w wierszu poleceń i tworzę katalog pokrycia, przechodząc --coveragedo skryptu Jest. Poniżej kilka przykładów:

Zwykle instaluję Jest lokalnie, w takim przypadku polecenie może wyglądać tak:

npx jest --coverage

Zakładam (choć nie potwierdziłem), że zadziałałoby to również, gdybym zainstalował Jest globalnie:

jest --coverage

Bardzo nieliczne dokumenty są tutaj

Kiedy przeszedłem do katalogu pokrycia / lcov-report , znalazłem plik index.html , który można było załadować do przeglądarki. Zawierał informacje wydrukowane w wierszu poleceń, a także dodatkowe informacje i niektóre dane wyjściowe graficzne.


7
Nigdy nie używaj modułów globalnych. Aby zapewnić spójność wersji i obecność pakietu, zawsze używaj pliku wykonywalnego w node_modulesvia ./node_modules/.bin/jest --coverage. Dopóki pakiet jest nazwany w package.json, możesz zagwarantować wykonanie z dokładną wersją żartu, jakiej oczekujesz.
— taystack

Jak uzyskać pokrycie tylko dla zmienionych plików?
— Shanika Ediriweera

Czy istnieje łatwy sposób na niepowodzenie testów, jeśli pokrycie jest poniżej określonego limitu? Odpowiednie pytanie SO: stackoverflow.com/questions/60512167/…
— Stefan


88

AKTUALIZACJA: 20.07.2018 - Dodano łącza i zaktualizowaną nazwę dla raportów zasięgu.

AKTUALIZACJA: 14.08.2017 - Ta odpowiedź jest całkowicie nieaktualna. Spójrz tylko na dokumenty Jest teraz. Mają oficjalne wsparcie i dokumentację, jak to zrobić.

@hankhsiao ma rozwidlone repozytorium, w którym Istambuł współpracuje z Jest. Dodaj to do swoich zależności deweloperskich

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

Upewnij się również, że w Twoim wpisie package.json jest włączone pokrycie i możesz również określić żądane formaty. (HTML jest dość kiepski).

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

Zobacz dokumentację Jest dla raportów pokrycia (domyślnie ["json", "lcov", "text"])

Lub dodaj, --coveragegdy przywołujesz żart.


1
Usunięto opcję CoverFormats - za każdym razem generowane są pliki json i html.

1
Używam opcji --coverage, ale absolutnie nic się nie dzieje.
— gbbr

3
Jest (teraz) wywołany, coverageReportersa wartość domyślna to ["json", "lcov", "text"]. Zobacz facebook.github.io/jest/docs/…
— Karsten S.

nie działa, znaleziono nieznaną opcję „pokryciaFormaty” o wartości [„json”, „html”].
— srghma

40

Styczeń 2019: Jest wersja 23.6

Dla każdego, kto ostatnio zastanawiał się nad tym pytaniem, zwłaszcza jeśli testuje się przy użyciu npmlub yarnbezpośrednio

Obecnie nie musisz zmieniać opcji konfiguracyjnych

Zgodnie z oficjalną stroną internetową możesz wykonać następujące czynności, aby wygenerować raporty pokrycia:

1- Dla npm:

Musisz postawić --przed przekazaniem --coverageargumentu żartu

npm test -- --coverage

jeśli spróbujesz wywołać --coveragebezpośrednio bez polecenia, --to nie zadziała

2- W przypadku przędzy:

Możesz przekazać --coverageargument żartu bezpośrednio

yarn test --coverage

1
Jak uzyskać pokrycie tylko dla zmienionych plików?
— Shanika Ediriweera

Zmiana od kiedy? Prawdopodobnie chcesz użyć do tego --watchustawienia.
— koehn

1
Ta odpowiedź zawiera wiele założeń dotyczących stanu jedności package.json.
— airtonix

6

W porządku, zignoruj ​​moją poprzednią odpowiedź, ponieważ ktoś powiedział mi, że to nie rozwiązało problemu.

Nowa odpowiedź:

1) Sprawdź najnowszy żart (v 0.22): https://github.com/facebook/jest

2) Zespół na Facebooku umieszcza Stambuł jako część raportu o zasięgu i możesz z niego korzystać bezpośrednio.

3) Po wykonaniu dowcipu możesz pobrać raport pokrycia na konsoli, aw katalogu głównym ustawionym przez żart znajdziesz raport pokrycia w formacie json i html.

4) FYI, jeśli zainstalujesz z npm, możesz nie dostać najnowszej wersji; więc najpierw wypróbuj github i upewnij się, że zasięg jest tym, czego potrzebujesz.


Stara odpowiedź:

Mam też ten sam problem. Krótka odpowiedź brzmi: Istanbuli JestNIE pracują razem.

Sprawdź następujące strony, aby uzyskać szczegółowe informacje:

https://github.com/facebook/jest/issues/101

jest używa contextify, który uruchamia skrypty JS w kontekście V8 w kodzie natywnym, pomijając w ten sposób wszystkie punkty zaczepienia wymagania i vm.runInThisContext w Stambule. Tak więc okładka istanbul nie będzie działać, ponieważ nie są używane standardowe funkcje node.js z możliwością zaczepienia, a pliki pre-instrumenting również nie pomogą, ponieważ każdy test działa we własnej piaskownicy i nie ma globalnego, w którym można przechowywać obiekt pokrycia.

@Ciro Costa: config.collectCoverageNIE działa, ponieważ jest to funkcja „TODO”. Sprawdź kod źródłowy.


Pytanie brzmiało, jak uzyskać pokrycie kodu dla Jest. To, że Istambuł i Jest nie współpracują ze sobą, może być prawdą, ale to nie odpowiada na pytanie.
— David Raab

0

Jeśli masz problem z niedziałającym --coverage, może to być również spowodowane włączeniem raportów pokrycia bez dodawania „tekstu” lub „podsumowania tekstu”. Z dokumentacji: „Uwaga: ustawienie tej opcji powoduje nadpisanie wartości domyślnych. Dodaj„ tekst ”lub„ podsumowanie tekstu ”, aby wyświetlić podsumowanie pokrycia w wynikach konsoli”. Źródło


0

Skonfiguruj plik package.json

"test": "jest --coverage",

wprowadź opis obrazu tutaj

Teraz biegnij:

yarn test

Rozpocznie się cały test i otrzymasz raport. wprowadź opis obrazu tutaj


-1

Miałem ten sam problem i naprawiłem go jak poniżej.

  1. zainstaluj przędzę npm install --save-dev yarn
  2. zainstaluj jest-cli npm install --save-dev jest-cli
  3. dodaj to do pliku package.json "jest-coverage": "yarn run jest -- --coverage"

Po napisaniu testów uruchom komendę npm run jest-zasięg. Spowoduje to utworzenie folderu pokrycia w katalogu głównym. /coverage/icov-report/index.html zawiera widok HTML pokrycia kodu.

Miłego kodowania!


8
Nie ma potrzeby zakładania przędzy. Yarn to po prostu inny menedżer pakietów niż NPM
— Black

-10

Spróbuj Chucpah . Właśnie go użyłem. Pisałem na blogu o tym, jak zintegrować się z Visual Studio.

Tak zrobiłem pokrycie kodu w Chutzpah: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/


Chutzpath jest zbudowany na wierzchu Blanketa i powyżej wskazałem, że Jest z nim nie działa.
— Alex Palcuie

Ciekawe, ponieważ mój właśnie działał. francorobles.wordpress.com/2014/09/14/…
— francorobles

1
Nie używasz Jest, który domyślnie szydzi każdy require.
— Alex Palcuie,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.