La couverture de Code avec Moka
Je suis à l'aide de Moka pour tester mon application NodeJS. Je ne suis pas en mesure de comprendre comment l'utilisation de son code d'entités de couverture. J'ai essayé de googler, mais n'a pas trouvé de bon tuto. S'il vous plaît aider.
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'une bibliothèque supplémentaire pour la couverture de code, et vous allez être époustouflé par la façon dont puissant et facile istanbul est. Essayez la procédure suivante, après que vous obtenez vos moka tests à passer:
Maintenant, il suffit de placer la commande de nyc en face de votre commande test, par exemple:
istanbul cover node_modules/mocha/bin/_mocha
.istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
est un terme raccourci pour./node_modules/.bin/
, etistanbul/lib/cli.js
est un alias deistanbul
dans le dossier bin. Voici donc un court de commande:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
$ istanbul cover _mocha -- -R spec No coverage information was collected, exit without writing coverage information C:\Users\Ulysses\AppData\Roaming\npm\_mocha.CMD:1 (function (exports, require, module, __filename, __dirname) { @IF EXIST "%~dp0 ^ SyntaxError: Unexpected token ILLEGAL
Comment puis-je résoudre ce s'il vous plaît?istanbul cover node_modules/mocha/bin/_mocha -- -R spec
Source: github.com/gotwarlost/istanbul/issues/90 istanbul suppose que le _mocha vous spécifiez se traduit par un fichier JS qui est vrai dans la non-environnements windows. Dans un environnement windows, ce qui est probablement un fichier de commandes qui est chargé par le nœud et, bien sûr, échoue.endpoints.js
et un fichier de testtest_endpoints.js
. Je veux voir combien de code de ce test couvreMaintenant (2019) la meilleure façon d'utiliser istanbul est par l'intermédiaire de son "etat de l'art l'interface de ligne de commande" nyc.
Installation
Tout d'abord, installez-la dans votre projet avec
Alors, si vous avez un mnp en fonction du projet, il suffit de modifier le script de test à l'intérieur de la
scripts
objet de votre package.json fichier à exécuter du code à la couverture de votre moka tests:Exécuter
Maintenant exécuter vos tests
et vous verrez un tableau comme celui-ci dans votre console, juste après vos tests de sortie:
Personnalisation
De rapport Html
Suffit d'utiliser
au lieu de
text
. Maintenant, il va produire un rapport à l'intérieur de./coverage/index.html
.Formats de rapport
Istanbul prend en charge un large éventail de formats de rapport. Il suffit de regarder ses bibliothèque de rapports de trouver le plus utile pour vous.
Il suffit d'ajouter une
--reporter=REPORTER_NAME
option pour chaque format que vous voulez.Par exemple, avec
vous aurez à la fois la console et le rapport html.
Ne pas exécuter de la couverture avec npm test
Juste ajouter un script dans votre
package.json
et de laisser letest
script avec seulement votre lanceur de test (par exemple, moka):Maintenant exécuter ce script personnalisé
pour exécuter des tests de couverture de code.
Essais de l'armée de défaut si la couverture de code est faible
Échouer si le total de la couverture de code est inférieur à 90%:
Échouer si le code de la couverture d'au moins un fichier est inférieure à 90%:
--reporter=html
activée, mais que le fichier html est toujours vide, il n'y a rien montré à propos découvert des blocs ou % couverts etc seulement les en-têtes du tableaunpm run test-with-coverage
échoue avec(function (exports, require, module, __filename, __dirname) { import _ from 'lodash'^^^^^^
.Blanket.js fonctionne parfaitement aussi.
npm install --save-dev blanket
en face de votre test/tests.js
exécuter
mocha -R html-cov > coverage.html