Sto usando Mocha per testare la mia applicazione NodeJS. Non sono in grado di capire come utilizzare la sua funzione di copertura del codice. Ho provato a cercarlo su Google ma non ho trovato alcun tutorial adeguato. Per favore aiuto.
Sto usando Mocha per testare la mia applicazione NodeJS. Non sono in grado di capire come utilizzare la sua funzione di copertura del codice. Ho provato a cercarlo su Google ma non ho trovato alcun tutorial adeguato. Per favore aiuto.
Risposte:
Hai bisogno di una libreria aggiuntiva per la copertura del codice e rimarrai sorpreso da quanto sia potente e facile Istanbul . Prova quanto segue, dopo aver superato i test del caffè:
npm install nyc
Ora posiziona semplicemente il comando nyc davanti al comando di test esistente, ad esempio:
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
è un collegamento canonico a ./node_modules/.bin/
, ed istanbul/lib/cli.js
è alias istanbul
nella cartella bin. Quindi, ecco un comando più breve:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
Ora ( 2020 ) il modo preferito di usare Istanbul è tramite la sua "interfaccia a riga di comando all'avanguardia" nyc .
Innanzitutto, installalo nel tuo progetto con
npm i nyc --save-dev
Quindi, se si dispone di un progetto basato su npm, è sufficiente modificare lo script di test all'interno scripts
dell'oggetto del file package.json per eseguire la copertura del codice dei test mocha :
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
Ora esegui i tuoi test
npm test
e vedrai una tabella come questa nella tua console, subito dopo l'output dei test:
Basta usare
nyc --reporter=html
invece di text
. Ora produrrà un rapporto all'interno ./coverage/index.html
.
Istanbul supporta un'ampia gamma di formati di report. Basta guardare la sua libreria di rapporti per trovare il più utile per te. Aggiungi --reporter=REPORTER_NAME
un'opzione per ogni formato che desideri. Ad esempio, con
nyc --reporter=html --reporter=text
avrai sia la console che il rapporto html.
Basta aggiungere un altro script nel tuo package.json
e lasciare lo test
script solo con il tuo test runner (ad esempio mocha):
{
"scripts": {
"test": "mocha",
"test-with-coverage": "nyc --reporter=text mocha"
}
}
Ora esegui questo script personalizzato
npm run test-with-coverage
per eseguire test con copertura del codice.
Fallimento se la copertura totale del codice è inferiore al 90%:
nyc --check-coverage --lines 90
Fallire se la copertura del codice di almeno un file è inferiore al 90%:
nyc --check-coverage --lines 90 --per-file
--reporter=html
abilitando ma il file html è sempre vuoto, non viene mostrato nulla sui blocchi scoperti o% coperto ecc. Solo le intestazioni della tabella
Blanket.js funziona anche perfettamente.
npm install --save-dev blanket
davanti al tuo test / tests.js
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
correre mocha -R html-cov > coverage.html
istanbul cover node_modules/mocha/bin/_mocha
.