Jest için kod kapsamı


Yanıtlar:


124

Jest 21.2.1'i kullanırken , komut satırında kod kapsamını görebilir --coverageve Jest betiğine geçerek bir kapsam dizini oluşturabilirim . Aşağıda bazı örnekler verilmiştir:

Jest'i yerel olarak kurma eğilimindeyim, bu durumda komut şöyle görünebilir:

npx jest --coverage

Jest'i global olarak kurarsam bunun da işe yarayacağını varsayıyorum (henüz onaylanmamış):

jest --coverage

Çok seyrek dokümanlar burada

Ben gittikten sonra kapsama / lcov raporu dizininde Bir buldum index.html bir tarayıcıya yüklendiğinde olabilir dosyayı. Komut satırında yazdırılan bilgilerin yanı sıra ek bilgiler ve bazı grafik çıktıları içeriyordu.


7
Asla global modüller kullanmayın. Sürüm tutarlılığını ve paket varlığını sağlamak için her zaman çalıştırılabilir dosyayı node_modulesaracılığıyla kullanın ./node_modules/.bin/jest --coverage. Paket, package.json içinde adlandırıldığı sürece, beklediğiniz jest sürümünün tam sürümüyle yürütülmesini garanti edebilirsiniz.
taystack

Sadece değiştirilen dosyalar için jest kapsamı nasıl alınır?
Shanika Ediriweera

Kapsam belirli bir sınırın altındaysa testleri geçmenin kolay bir yolu var mı? Karşılık gelen SO sorusu: stackoverflow.com/questions/60512167/…
Stefan


88

GÜNCELLEME: 7/20/2018 - Kapsama Raporları için bağlantılar ve güncellenmiş ad eklendi.

GÜNCELLEME: 8/14/2017 - Bu yanıt tamamen güncel değil. Şimdi Jest belgelerine bakın. Bunun nasıl yapılacağına dair resmi destek ve belgeleri var.

@hankhsiao'nun İstanbul'un Jest ile çalıştığı çatallı bir repo'su var. Bunu geliştirici bağımlılıklarınıza ekleyin

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

Ayrıca package.json jest girişinizde kapsamın etkinleştirildiğinden emin olun ve ayrıca istediğiniz formatları da belirtebilirsiniz. (Html ​​oldukça kötü).

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

Kapsam için Jest belgelerine bakın Raporlayıcılar (varsayılan )["json", "lcov", "text"]

Veya --coverageşakayı çağırdığınızda ekleyin .


1
CoverFormats seçeneği kaldırıldı - görünüşe göre json ve html her seferinde üretiliyor.

1
--Coverage seçeneğini kullanıyorum ama kesinlikle farklı bir şey olmuyor.
gbbr

3
Bu (şimdi) çağrıldı coverageReportersve varsayılan ["json", "lcov", "text"]. Bkz. Facebook.github.io/jest/docs/…
Karsten S.

çalışmıyor, ["json", "html"] değerine sahip bilinmeyen "coverFormats" seçeneği bulundu.
srghma

40

Ocak 2019: Jest sürüm 23.6

Son zamanlarda bu soruyu araştıran herkes için, özellikle kullanarak npmveya yarndoğrudan test ediyorsanız

Şu anda yapılandırma seçeneklerini değiştirmeniz gerekmiyor

Gereğince jest resmi web sitesi , sen kapsama raporlar oluşturmak için aşağıdakileri yapabilirsiniz:

1- npm için:

Jest argümanını --geçmeden önce koymalısınız--coverage

npm test -- --coverage

Eğer --coverageolmadan doğrudan çağırmayı denersen --işe yaramaz

2- İplik için:

--coverageDoğrudan jest argümanını iletebilirsiniz

yarn test --coverage

1
Sadece değiştirilen dosyalar için jest kapsamı nasıl alınır?
Shanika Ediriweera

Ne zamandan beri değişiyor? Muhtemelen bunun için --watchayarı kullanmak istersiniz .
koehn

1
Bu cevap, birinin durumu hakkında birçok varsayımda bulunur package.json.
airtonix

6

Pekala, birisi sorunu çözmediğini söylediği için önceki cevabımı yoksayın.

Yeni Cevap:

1) En son jest'i kontrol edin (v 0.22): https://github.com/facebook/jest

2) Facebook ekibi istanbul'u haber raporunun bir parçası olarak koyar ve bunu doğrudan kullanabilirsiniz.

3) Jest'i çalıştırdıktan sonra, konsol üzerinden ve jest tarafından belirlenen kök klasörün altında kapsam raporu alabilirsiniz, kapsam raporunu json ve html formatında bulacaksınız.

4) Bilginize, npm'den yüklerseniz, en son sürümü alamayabilirsiniz; Bu yüzden önce github'ı deneyin ve kapsamın ihtiyacınız olan şey olduğundan emin olun.


Eski Cevap:

Aynı sorunu da yaşadım. Kısa cevap: Istanbulve Jestbirlikte ÇALIŞMIYOR.

Daha fazla ayrıntı için aşağıdaki sayfaları kontrol edin:

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

jest, JS betiklerini yerel kodda bir V8 bağlamında çalıştıran contextify kullanır, böylece istanbul'un tüm gereksinimlerini ve vm.runInThisContext kancalarını atlar. Bu nedenle, standart bağlanabilir node.js fonksiyonları kullanılmadığından ve her test kendi sandbox'ında çalıştığından ve kapsama nesnesinin saklanacağı bir global olmadığından, istanbul kapağı çalışmayacaktır.

@Ciro Costa: config.collectCoverageBir 'YAPILACAK' işlevi olduğu için çalışmıyor. Lütfen kaynak kodunu kontrol edin.


Soru, Jest için Kod kapsamının nasıl alınacağıydı. İstanbul ve Jest'in birlikte çalışmadığı doğru olabilir ama bu sorunun cevabı değil.
David Raab

0

--Coverage çalışmama konusunda sorun yaşıyorsanız, kapsam Raporlayıcıların 'metin' veya 'metin-özet' eklenmeden etkinleştirilmiş olmasından da kaynaklanıyor olabilir. Dokümanlardan: "Not: Bu seçeneğin ayarlanması varsayılan değerlerin üzerine yazar. Konsol çıktısında bir kapsam özeti görmek için" metin "veya" metin özeti "ekleyin." Kaynak


0

Package.json dosyanızı yapılandırın

"test": "jest --coverage",

görüntü açıklamasını buraya girin

Şimdi çalıştırın:

yarn test

Tüm testler çalışmaya başlayacak ve raporu alacaksınız. görüntü açıklamasını buraya girin


-1

Aynı sorunu yaşadım ve aşağıdaki gibi düzelttim.

  1. iplik yükle npm install --save-dev yarn
  2. jest-cli'yi yükle npm install --save-dev jest-cli
  3. bunu package.json'a ekle "jest-coverage": "yarn run jest -- --coverage"

Testleri yazdıktan sonra npm komutunu çalıştırın jest-kapsamı. Bu, kök dizinde kapsama klasörü oluşturacaktır. /coverage/icov-report/index.html, kod kapsamının html görünümüne sahiptir.

Mutlu kodlamalar!


8
İplik takmaya gerek yoktur. İplik NPM'den farklı bir paket yöneticisi
Siyah

-10

Chutzpah'ı deneyin . Ben sadece kullandım. Ve bununla ilgili olarak Visual Studio'ya nasıl entegre edileceğini yazdım.

Chutzpah ile kod kapsamını böyle yaptım: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/


Chutzpath Battaniye üzerine inşa edilmiştir ve yukarıda Jest'in bununla çalışmadığını belirttim.
Alex Palcuie

İlginç çünkü benimki işe yaradı. francorobles.wordpress.com/2014/09/14/…
francorobles

1
Varsayılan olarak her birinin taklit ettiği Jest'i kullanmıyorsunuz require.
Alex Palcuie
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.