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é. S'il vous plaît aider.
Vous avez besoin d'une bibliothèque supplémentaire pour la couverture de code, et vous allez être époustouflé par la puissance et la simplicité de istanbul . Essayez ce qui suit après avoir passé vos tests moka:
npm install nyc
Maintenant, placez simplement la commande nyc devant votre commande de test existante, par exemple:
{
"scripts": {
"test": "nyc mocha"
}
}
Maintenant ( 2019 ), le moyen préféré d'utiliser istanbul est d'utiliser son interface de ligne de commande "dernier cri" "nyc .
Tout d'abord, installez-le dans votre projet avec
npm i nyc --save-dev
Ensuite, si vous avez un projet basé sur npm, modifiez simplement le script de test dans l’objet scripts
de votre fichier package.json pour exécuter la couverture en code de votre mocha tests:
{
"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:
Juste utiliser
nyc --reporter=html
au lieu de text
. Maintenant, il produira un rapport dans ./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. Ajoutez simplement une option --reporter=REPORTER_NAME
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 script test
uniquement avec votre programme d'exécution de test (par exemple, mocha):
{
"scripts": {
"test": "mocha",
"test-with-coverage": "nyc --reporter=text mocha"
}
}
Maintenant, lancez ce script personnalisé
npm run test-with-coverage
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 de code d'au moins un fichier est inférieure à 90%:
nyc --check-coverage --lines 90 --per-file
Blanket.js fonctionne parfaitement aussi.
npm install --save-dev blanket
devant votre test/tests.js
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
lancer mocha -R html-cov > coverage.html