Cakupan kode untuk Jest


Jawaban:


123

Saat menggunakan Jest 21.2.1 , saya bisa melihat cakupan kode di baris perintah dan membuat direktori cakupan dengan meneruskan --coverageke skrip Jest. Di bawah ini adalah beberapa contoh:

Saya cenderung menginstal Jest secara lokal, dalam hal ini perintahnya mungkin terlihat seperti ini:

npx jest --coverage

Saya berasumsi (meskipun belum mengkonfirmasi), bahwa ini juga akan berfungsi jika saya menginstal Jest secara global:

jest --coverage

Dokumen yang sangat jarang ada di sini

Ketika saya menavigasi ke direktori coverage / lcov-report saya menemukan file index.html yang dapat dimuat ke browser. Itu termasuk informasi yang dicetak pada baris perintah, ditambah informasi tambahan dan beberapa keluaran grafis.


7
Jangan pernah menggunakan modul global. Untuk memastikan konsistensi versi, dan kehadiran paket, selalu gunakan executable di node_modulesvia ./node_modules/.bin/jest --coverage. Selama paket tersebut disebutkan dalam package.json, Anda dapat menjamin eksekusi dengan versi lelucon yang Anda harapkan.
taystack

Bagaimana cara mendapatkan cakupan lelucon hanya untuk file yang diubah?
Shanika Ediriweera

Apakah ada cara mudah untuk gagal tes jika cakupan di bawah batas tertentu? Pertanyaan SO yang sesuai: stackoverflow.com/questions/60512167/…
Stefan


88

UPDATE: 7/20/2018 - Tautan yang ditambahkan dan nama yang diperbarui untuk coverageReporters.

UPDATE: 8/14/2017 - Jawaban ini benar-benar ketinggalan jaman. Lihat saja dokumen Jest sekarang. Mereka memiliki dukungan dan dokumentasi resmi tentang cara melakukan ini.

@hankhsiao punya repo bercabang-cabang di mana Istanbul bekerja dengan Jest. Tambahkan ini ke dependensi dev Anda

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

Pastikan juga cakupan diaktifkan di entri gurauan package.json Anda dan Anda juga dapat menentukan format yang Anda inginkan. (The html adalah pantat yang sangat buruk).

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

Lihat dokumentasi Jest untuk coverageReporters (standarnya adalah ["json", "lcov", "text"])

Atau tambahkan --coverageketika Anda memanggil lelucon.


1
Opsi coverageFormats telah dihapus - sepertinya json dan html dihasilkan setiap waktu.

1
Saya menggunakan opsi --coverage tetapi sama sekali tidak ada yang berbeda terjadi.
gbbr

3
Ini (sekarang) dipanggil coverageReportersdan defaultnya adalah ["json", "lcov", "text"]. Lihat facebook.github.io/jest/docs/…
Karsten S.

jangan berhasil, opsi "coverageFormats" dengan nilai ["json", "html"] tidak ditemukan.
srghma

40

Jan 2019: Jest versi 23.6

Bagi siapa pun yang melihat pertanyaan ini baru-baru ini terutama jika pengujian menggunakan npmatau yarnlangsung

Saat ini, Anda tidak perlu mengubah opsi konfigurasi

Sesuai situs web resmi lelucon , Anda dapat melakukan hal berikut untuk menghasilkan laporan cakupan:

1- Untuk npm:

Anda harus meletakkan --sebelum melewati --coverageargumen lelucon

npm test -- --coverage

jika Anda mencoba memanggil --coveragelangsung tanpa --itu tidak akan berhasil

2- Untuk benang:

Anda dapat melewatkan --coverageargumen lelucon secara langsung

yarn test --coverage

1
Bagaimana cara mendapatkan cakupan lelucon hanya untuk file yang diubah?
Shanika Ediriweera

Berubah sejak kapan? Anda mungkin ingin menggunakan --watchpengaturan untuk ini.
koehn

1
Jawaban ini membuat banyak asumsi tentang keadaan orang package.json.
airtonix

6

Baiklah, abaikan jawaban saya sebelumnya karena seseorang mengatakan kepada saya bahwa itu tidak menyelesaikan masalah.

Jawaban Baru:

1) Periksa lelucon terbaru (v 0.22): https://github.com/facebook/jest

2) Tim facebook menempatkan istanbul sebagai bagian dari laporan liputan dan Anda dapat menggunakannya secara langsung.

3) Setelah mengeksekusi lelucon, Anda bisa mendapatkan laporan cakupan pada konsol dan di bawah folder root yang ditetapkan oleh lelucon, Anda akan menemukan laporan cakupan dalam format json dan html.

4) FYI, jika Anda menginstal dari npm, Anda mungkin tidak mendapatkan versi terbaru; jadi cobalah github terlebih dahulu dan pastikan cakupannya adalah yang Anda butuhkan.


Jawaban lama:

Punya masalah yang sama juga. Jawaban singkatnya adalah: Istanbuldan JestTIDAK bekerja sama.

Periksa halaman-halaman berikut untuk detail lebih lanjut:

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

jest menggunakan contextify yang menjalankan skrip JS dalam konteks V8 dalam kode asli sehingga melewati semua kebutuhan istanbul dan kait vm.runInThisContext. Jadi penutup istanbul tidak akan berfungsi karena fungsi node.js hookable standar tidak digunakan dan file pra-instrumenting tidak akan membantu karena setiap tes berjalan di kotak pasir sendiri dan tidak ada global di mana untuk menyimpan objek cakupan.

@ Circo Costa: config.collectCoverageTIDAK berfungsi, karena ini adalah fungsi 'TODO'. Silakan periksa kode sumber.


Pertanyaannya adalah bagaimana cara mendapatkan cakupan Kode untuk Jest. Bahwa Istanbul dan Jest tidak bekerja bersama mungkin benar, tetapi itu tidak menjawab pertanyaan.
David Raab

0

Jika Anda mengalami masalah dengan --coverage tidak berfungsi, itu mungkin juga karena memiliki coverageReporters diaktifkan tanpa 'teks' atau 'ringkasan teks' yang ditambahkan. Dari dokumen: "Catatan: Mengatur opsi ini menimpa nilai default. Tambahkan" teks "atau" ringkasan teks "untuk melihat ringkasan cakupan dalam output konsol." Sumber


0

Konfigurasikan file package.json Anda

"test": "jest --coverage",

masukkan deskripsi gambar di sini

Sekarang jalankan:

yarn test

Semua tes akan mulai berjalan dan Anda akan mendapatkan laporan. masukkan deskripsi gambar di sini


-1

Saya memiliki masalah yang sama dan saya memperbaikinya seperti di bawah ini.

  1. pasang benang npm install --save-dev yarn
  2. instal jest-cli npm install --save-dev jest-cli
  3. tambahkan ini ke package.json "jest-coverage": "yarn run jest -- --coverage"

Setelah Anda menulis tes, jalankan perintah npm jalankan jest-coverage. Ini akan membuat folder cakupan di direktori root. /coverage/icov-report/index.html memiliki tampilan html dari cakupan kode.

Selamat coding!


8
Tidak perlu memasang benang. Yarn hanyalah pengelola paket yang berbeda dengan NPM
Black

-10

Coba Chutzpa . Saya baru saja menggunakannya. Dan saya menulis blog tentang cara mengintegrasikan dalam Visual Studio.

Ini adalah bagaimana saya melakukan cakupan kode dengan Chutzpah: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/


Chutzpath dibangun di atas Blanket dan saya sebutkan di atas bahwa Jest tidak bekerja dengannya.
Alex Palcuie

Menarik karena milik saya baru saja bekerja. francorobles.wordpress.com/2014/09/14/…
francorobles

1
Anda tidak menggunakan Jest, yang secara default mengolok-olok setiap require.
Alex Palcuie
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.