J'utilise Mocha pour tester mon application NodeJS. Je ne suis pas en mesure de comprendre comment utiliser sa fonction de couverture de code. J'ai essayé de le googler mais je n'ai trouvé aucun tutoriel approprié. Veuillez aider.
J'utilise Mocha pour tester mon application NodeJS. Je ne suis pas en mesure de comprendre comment utiliser sa fonction de couverture de code. J'ai essayé de le googler mais je n'ai trouvé aucun tutoriel approprié. Veuillez aider.
Réponses:
Vous avez besoin d'une bibliothèque supplémentaire pour la couverture du code, et vous allez être époustouflé par la puissance et la simplicité d' Istanbul . Essayez ce qui suit, après avoir réussi vos tests de moka:
npm install nyc
Maintenant, placez simplement la commande nyc devant votre commande de test existante, par exemple:
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
est un raccourci canonique vers ./node_modules/.bin/
et istanbul/lib/cli.js
est aliasé istanbul
dans le dossier bin. Voici donc une commande plus courte:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
Maintenant ( 2020 ), la meilleure façon d'utiliser istanbul est via son "état de l'art interface de ligne de commande" nyc .
Tout d'abord, installez-le dans votre projet avec
npm i nyc --save-dev
Ensuite, si vous avez un projet basé sur npm, changez simplement le script de test à l'intérieur de l' scripts
objet de votre fichier package.json pour exécuter la couverture de code de vos tests mocha :
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
Maintenant, lancez vos tests
npm test
et vous verrez un tableau comme celui-ci dans votre console, juste après la sortie de vos tests:
Utilisez simplement
nyc --reporter=html
au lieu de text
. Il va maintenant produire un rapport à l'intérieur ./coverage/index.html
.
Istanbul prend en charge un large éventail de formats de rapport. Il suffit de regarder sa bibliothèque de rapports pour trouver le plus utile pour vous. Ajoutez simplement une --reporter=REPORTER_NAME
option pour chaque format souhaité. Par exemple, avec
nyc --reporter=html --reporter=text
vous aurez à la fois la console et le rapport html.
Ajoutez simplement un autre script dans votre package.json
et laissez le test
script uniquement avec votre lanceur de test (par exemple mocha):
{
"scripts": {
"test": "mocha",
"test-with-coverage": "nyc --reporter=text mocha"
}
}
Maintenant, exécutez ce script personnalisé
npm run test-with-coverage
pour exécuter des tests avec une couverture de code.
Échec si la couverture totale du code est inférieure à 90%:
nyc --check-coverage --lines 90
Échec si la couverture du code d'au moins un fichier est inférieure à 90%:
nyc --check-coverage --lines 90 --per-file
--reporter=html
activé mais le fichier html est toujours vide, rien n'est montré sur les blocs non couverts ou% couverts, etc. juste les en-têtes du tableau
Blanket.js fonctionne également parfaitement.
npm install --save-dev blanket
devant votre test / tests.js
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
courir mocha -R html-cov > coverage.html
istanbul cover node_modules/mocha/bin/_mocha
.