web-dev-qa-db-fra.com

Couverture de code avec Moka

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.

262
tusharmath

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"
  }
}
375
Dan Kohn

Maintenant ( 2019 ), le moyen préféré d'utiliser istanbul est d'utiliser son interface de ligne de commande "dernier cri" "nyc .

Installer

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"
  }
}

Courir

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:

Istanbul Nyc Mocha code coverage

Personnalisation

Rapport html

Juste utiliser

nyc --reporter=html

au lieu de text. Maintenant, il produira un rapport dans ./coverage/index.html.

Formats de rapport

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.

Ne couvrez pas le test npm

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.

Forcer le test en cas d'échec si la couverture de code est faible

É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
108
lifeisfoo

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

19
jsan