Couverture de code d'Istanbul pour les tests de Mocha

J'essaie de faire fonctionner Istanbul.

Je continue d'obtenir ce message à la fin de l'exécution Istanbul:

Aucune information de couverture n'a été recueillie, quittez sans écrire les informations de couverture

J'ai essayé tout ce que je pouvais trouver en ligne comme vous pouvez le voir:

"scripts": { "start": "node ./bin/start.js", "test": "mocha test --no-timeouts", "debug_mocha": "node-debug --no-timeouts _mocha", "eslint": "eslint .", "jshint": "jshint --exclude ./node_modules .", "istanbul": "istanbul cover --include-all-sources --hook-run-in-context node_modules/.bin/_mocha -- -u exports -R spec test/**/*", "istanbul2":"istanbul cover node_modules/.bin/_mocha -- -u exports -R spec test/**/*", "istanbul1":"istanbul cover node_modules/.bin/_mocha -- test/**/*", "istanbul0":"istanbul cover _mocha test/**/*.js", "istanbul3":"istanbul cover _mocha -- -R spec --recursive test" } 

Mon fichier .istanbul.yml est à la racine du projet et il semble que istanbul le récupère avec succès.

 //.istanbul.yml instrumentation: compact: false save-baseline: true reporting: reports: - lcov - cobertura 

Qu'est-ce qui me manque?

Je l'ai, enfin.

https://github.com/gotwarlost/istanbul/issues/44#issuecomment-57708358 dit:

L'utilisation de _mocha ne fonctionne pas directement sur Windows. Veuillez utiliser le chemin complet vers le fichier JS à la place

Ensuite, après une petite expérimentation, la victoire:

 istanbul cover C:/dev/my_project/node_modules/mocha/bin/_mocha -- 

Essayez cela, cela peut vous aider. Étiquette de script dans votre package.json

 "cover" : "NODE_ENV=test babel-node ./node_modules/babel-istanbul/lib/cli cover --dir ./coverage _mocha -- -R spec --ui bdd ./test/setup.js ./test --recursive" 

Setup.js sera votre javascript d'installation

./test sera le dossier où se trouvent tous vos tests.

Les paquetages doivent être installés:

  • Babel-istanbul
  • Babel-node
  • moka

Cela fonctionne pour moi 🙂 (npm run cover)


Remarque: si sur Windows : supprimez NODE_ENV = test et peut-être besoin de créer le chemin complet _mocha dans votre dossier module nœud

Si vous configurez un nouveau projet et que vous essayez de faire fonctionner l'istanbul, assurez-vous que vous disposez d'au moins un fichier de test qui fait référence à au moins un des fichiers de projet d'istanbul pour la référence pour son rapport de couverture.

 "istanbul": "0.4.4", "mocha": "3.0.0" 

Dans mon cas, j'étais en train de créer un nouveau projet et d'obtenir les premiers index.js et test/index.spec.js préparés. Quand j'ai essayé de courir:

 "test": "istanbul cover --report html node_modules/mocha/bin/_mocha -- test/**/*.js --ui bdd -R spec" 

J'ai obtenu un résultat de la moustache de tous les tests d'unités passant (ce qui n'a pas encore été testé pour que tous les 0 passent) mais j'ai ensuite reçu cette erreur après cela:

Aucune information de couverture n'a été recueillie, quittez sans écrire les informations de couverture

Le problème s'est avéré être que je n'avais pas encore ajouté une index.js pour le fichier index.js dans le fichier test/index.spec.js le moment. Istanbul n'a pas de fichiers à référencer à partir des fichiers de test pour vérifier les informations de couverture.

S'il s'agit d'une question de cheminement à _chaque référencée dans le script npm, il y aura un message "SyntaxError:" supplémentaire qui suit le message "Aucune information de couverture collectée" .