Istanbul consiglia di utilizzare nyc per verificare la copertura del codice. Suggerisce un approccio come questo:
nyc mocha
Dopo aver eseguito questo comando, otterremo il rapporto sulla copertura. Ma ci sono un paio di insidie.
Prima di tutto, per impostazione predefinita, mocha
cerca i test nella cartella test
. Al fine di eseguire l'override di esso, dobbiamo impostare il nostro percorso nel file di mocha.opts
come questo:
nyc mocha --opts ./mocha.opts
E mocha.opts
contiene tale codice, ad esempio:
spec/unit/back-end/**/*.spec.js
Un altro problema è che di default nyc
controlli copertura dei soli file richiesti, ovvero la tua domanda riguarda. La soluzione è impostare due opzioni per nyc
(eseguo il test come script npm, quindi imposto le opzioni in package.json). Ecco il codice:
"nyc": {
"all": true,
"include": [
"routes/*.js",
"routes/**/*.js",
"models/*.js"
]
},
"scripts": {
"mocha": "nyc mocha --opts ./mocha.opts",
}
Un altro modo per raggiungerlo è quello di impostare non include
, ma exclude
opzione al fine di escludere dalla copertura verifica file inappropriate. È strano, ma l'unica opzione all
non funziona, richiede le opzioni include
o exclude
. È possibile ottenere ulteriori informazioni sulle opzioni nyc
tramite nyc --help
.
P.S. Non so nyc
e mocha
profondamente e sono basato solo sulla mia esperienza.
fonte
2018-01-29 09:46:38
Forse questa discussione ti aiuterà: http://stackoverflow.com/questions/22702578/full-gulp-istanbul-coverage-report/26418759#26418759 (ma questo richiede l'uso di gulp). Anche l'utilizzo dell'opzione includeUntested senza gulp potrebbe aiutare (https://github.com/SBoudrias/gulp-istanbul#includeuntested). – Anastasia
Sembra promettente, grazie! – Seer