Copertura del codice per Jest


Risposte:


123

Quando utilizzo Jest 21.2.1 , posso vedere la copertura del codice dalla riga di comando e creare una directory di copertura passando --coverageallo script Jest. Di seguito sono riportati alcuni esempi:

Tendo a installare Jest localmente, nel qual caso il comando potrebbe apparire così:

npx jest --coverage

Suppongo (anche se non ho confermato), che funzionerebbe anche se avessi installato Jest a livello globale:

jest --coverage

I documenti molto sparsi sono qui

Quando ho navigato nella directory coverage / lcov-report ho trovato un file index.html che poteva essere caricato in un browser. Comprendeva le informazioni stampate dalla riga di comando, oltre a informazioni aggiuntive e alcuni output grafici.


7
Non usare mai moduli globali. Per garantire la coerenza della versione e la presenza del pacchetto, utilizzare sempre l'eseguibile in node_modulesvia ./node_modules/.bin/jest --coverage. Finché il pacchetto è denominato in package.json, puoi garantire l'esecuzione con la versione esatta di jest che ti aspetti.
martedì

Come ottenere la copertura jest solo per i file modificati?
Shanika Ediriweera,

C'è un modo semplice per fallire i test se la copertura è al di sotto di un certo limite? Domanda SO corrispondente: stackoverflow.com/questions/60512167/…
Stefan


88

AGGIORNAMENTO: 20/07/2018 - Aggiunti collegamenti e nome aggiornato per la copertura dei giornalisti.

AGGIORNAMENTO: 14/08/2017 - Questa risposta è totalmente obsoleta. Guarda i documenti di Jest ora. Hanno supporto e documentazione ufficiali su come farlo.

@hankhsiao ha un repository biforcuto in cui Istanbul sta lavorando con Jest. Aggiungi questo alle dipendenze degli sviluppatori

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

Assicurati anche che la copertura sia abilitata nella tua voce jest package.json e puoi anche specificare i formati che desideri. (L'html è un bel culo).

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

Consulta la documentazione di Jest per la copertura Reporter (l'impostazione predefinita è ["json", "lcov", "text"])

O aggiungi --coveragequando invochi scherzo.


1
L'opzione coverageFormats è stata rimossa: sembra che json e html siano entrambi generati ogni volta.

1
Uso l'opzione --coverage ma non succede assolutamente nulla di diverso.
gbbr,

3
Si chiama (ora) coverageReporterse l'impostazione predefinita è ["json", "lcov", "text"]. Vedi facebook.github.io/jest/docs/…
Karsten S.

non funziona, è stata trovata l'opzione sconosciuta "coverageFormats" con valore ["json", "html"].
srghma,

40

Gennaio 2019: versione Jest 23.6

Per chiunque si occupi di questa domanda di recente, soprattutto se si esegue il test utilizzando npmo yarndirettamente

Attualmente, non è necessario modificare le opzioni di configurazione

Come per il sito Web ufficiale jest , è possibile effettuare le seguenti operazioni per generare rapporti di copertura:

1- Per npm:

Devi mettere --prima di passare l' --coverageargomento di scherzo

npm test -- --coverage

se provi a richiamare --coveragedirettamente senza --che non funzionerà

2- per filato:

Puoi passare direttamente l' --coverageargomento di jest

yarn test --coverage

1
Come ottenere la copertura jest solo per i file modificati?
Shanika Ediriweera,

Modificato da quando? Probabilmente vuoi usare l' --watchimpostazione per questo.
Koehn,

1
Questa risposta fa molte ipotesi sullo stato di quelli package.json.
airtonix

6

Va bene, ignora la mia precedente risposta poiché qualcuno mi ha detto che non ha risolto il problema.

Nuova risposta:

1) Controlla l'ultimo jest (v 0.22): https://github.com/facebook/jest

2) Il team di Facebook inserisce Istanbul nel report di copertura e puoi utilizzarlo direttamente.

3) Dopo aver eseguito jest, è possibile ottenere un rapporto di copertura sulla console e nella cartella principale impostata da jest, è possibile trovare il rapporto di copertura in formato json e html.

4) Cordiali saluti, se si installa da npm, è possibile che non si ottenga la versione più recente; quindi prova prima il github e assicurati che la copertura sia ciò di cui hai bisogno.


Vecchia risposta:

Ho anche lo stesso problema. La risposta breve è: Istanbule JestNON stanno lavorando insieme.

Controlla le pagine seguenti per maggiori dettagli:

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

jest utilizza contextify che esegue gli script JS in un contesto V8 nel codice nativo, ignorando così tutti gli hook di istanbul e di hook vm.runInThisContext. Quindi la copertura di istanbul non funzionerà poiché le funzioni hook.js standard hookable non vengono utilizzate e i file di pre-strumentazione non saranno di aiuto poiché ogni test viene eseguito nella propria sandbox e non esiste un globale in cui riporre l'oggetto di copertura.

@Ciro Costa: config.collectCoverageNON funziona, poiché è una funzione 'TODO'. Si prega di controllare il codice sorgente.


La domanda era: come ottenere la copertura del codice per Jest. Che Istanbul e Jest non lavorino insieme potrebbe essere vero, ma ciò non risponde alla domanda.
David Raab,

0

Se si riscontrano problemi con --coverage non funziona, ciò potrebbe essere dovuto anche alla possibilità di abilitare la copertura Reporter senza l'aggiunta di "testo" o "riepilogo testo". Dai documenti: "Nota: l'impostazione di questa opzione sovrascrive i valori predefiniti. Aggiungi" testo "o" riepilogo testo "per visualizzare un riepilogo della copertura nell'output della console." fonte


0

Configura il tuo file package.json

"test": "jest --coverage",

inserisci qui la descrizione dell'immagine

Ora esegui:

yarn test

Tutto il test inizierà a funzionare e otterrai il rapporto. inserisci qui la descrizione dell'immagine


-1

Ho avuto lo stesso problema e l'ho risolto come di seguito.

  1. installare il filo npm install --save-dev yarn
  2. installa jest-cli npm install --save-dev jest-cli
  3. aggiungilo a package.json "jest-coverage": "yarn run jest -- --coverage"

Dopo aver scritto i test, eseguire il comando npm run jest-coverage. Ciò creerà una cartella di copertura nella directory principale. /coverage/icov-report/index.html ha la vista html della copertura del codice.

Buona programmazione!


8
Non è necessario installare filo. Yarn è un gestore di pacchetti diverso da NPM
Black

-10

Prova Chutzpah . L'ho appena usato. E ho scritto un blog su come integrare in Visual Studio.

È così che ho copiato il codice con Chutzpah: http://francorobles.wordpress.com/2014/09/14/code-coverage-with-chutzpah/


Chutzpath è costruito sopra Blanket e ho specificato sopra che Jest non funziona con esso.
Alex Palcuie,

Interessante perché il mio ha appena funzionato. francorobles.wordpress.com/2014/09/09/14/…
francorobles

1
Non stai usando Jest, che per impostazione predefinita prende in giro ogni require.
Alex Palcuie,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.