Existe-t-il un moyen d’avoir une couverture de code dans le framework de test Javascript Jest qui repose sur Jasmine?
Le cadre interne n’est pas affiche la couverture de code qu’il reçoit. J'ai aussi essayé d'utiliser Istanbul , blanket et JSCover , mais aucun d'eux ne fonctionne.
Lorsque vous utilisez Jest 21.2.1, je peux voir la couverture de code sur la ligne de commande et créer un répertoire de couverture en transmettant --coverage
au script Jest. Ci-dessous quelques exemples:
J'ai tendance à installer Jest localement, auquel cas la commande pourrait ressembler à ceci:
npx jest --coverage
Je suppose (même si ce n’est pas confirmé) que cela fonctionnerait aussi si j’installais Jest globalement:
jest --coverage
Les documents très rares sont ici
Lorsque j'ai navigué dans le répertoire couverture/lcov-report, j'ai trouvé un fichier index.html pouvant être chargé dans un navigateur. Il comprenait les informations imprimées sur la ligne de commande, ainsi que des informations supplémentaires et des sorties graphiques.
UPDATE: 20/07/2018 - Ajout de liens et nom mis à jour pour les reporters de couverture.
MISE À JOUR: 8/14/2017 - Cette réponse est totalement obsolète. Il suffit de regarder la documentation Jest maintenant. Ils ont un soutien officiel et de la documentation sur la façon de le faire.
@hankhsiao a un repo forké où Istanbul travaille avec Jest. Ajoutez ceci à vos dépendances de dev
"devDependencies": {
"jest-cli": "git://github.com/hankhsiao/jest.git"
}
Assurez-vous également que la couverture est activée dans votre entrée jest package.json et vous pouvez également spécifier les formats de votre choix. (Le html est assez mauvais cul).
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"],
}
Voir Documentation Jest pour couvertureReporteurs (la valeur par défaut est ["json", "lcov", "text"]
)
Ou ajoutez --coverage
lorsque vous invoquez une plaisanterie.
Pour ceux qui se penchent sur cette question récemment surtout si vous testez directement avec npm ou le fil
Actuellement, vous n'avez pas besoin de changer les options de configuration.
Selon le site Web officiel de jest , vous pouvez procéder comme suit pour générer des rapports de couverture:
Vous devez mettre --
avant de passer l'argument --coverage de jest
npm test -- --coverage
si vous essayez d'appeler le --coverage
directement sans le --
cela ne fonctionnera pas
Vous pouvez passer directement l'argument --coverage
de jest
yarn test --coverage
Bon, ignorez ma réponse précédente car quelqu'un m'a dit que cela ne résolvait pas le problème.
Nouvelle réponse:
1) Vérifiez la dernière blague (v 0.22): https://github.com/facebook/jest
2) L’équipe de Facebook inclut l’istanbul dans le rapport de couverture et vous pouvez l’utiliser directement.
3) Après avoir exécuté jest, vous pouvez obtenir un rapport de couverture sur la console et sous le dossier racine défini par jest, vous trouverez le rapport de couverture au format json et html.
4) Pour votre information, si vous installez à partir de npm, vous risquez de ne pas obtenir la dernière version. essayez donc d’abord le github et assurez-vous que la couverture est celle dont vous avez besoin.
Ancienne réponse:
Vous avez le même problème aussi. La réponse courte est: Istanbul
et Jest
ne travaillent PAS ensemble.
Consultez les pages suivantes pour plus de détails:
https://github.com/facebook/jest/issues/101
jest utilise contextify qui exécute les scripts JS dans un contexte V8 en code natif, ignorant ainsi tous les hooks require et vm.runInThisContext d'istanbul. Ainsi, la couverture istanbul ne fonctionnera pas, car les fonctions standard hookables de node.js ne sont pas utilisées et les fichiers de pré-instrumentation ne seront d'aucun secours, car chaque test s'exécute dans son propre bac à sable et qu'il n'y a pas de cache global pour l'objet de couverture.
@Ciro Costa: Le config.collectCoverage
ne fonctionne PAS car il s'agit d'une fonction 'TODO'. S'il vous plaît vérifier le code source.
J'ai eu le même problème et je l'ai corrigé comme ci-dessous.
npm install --save-dev yarn
npm install --save-dev jest-cli
"jest-coverage": "yarn run jest -- --coverage"
Après avoir écrit les tests, exécutez la commande npm run jest-coverage. Cela créera un dossier de couverture dans le répertoire racine. /coverage/icov-report/index.html a la vue HTML de la couverture de code.
Bonne codage!
Si vous rencontrez des problèmes avec --coverage ne fonctionne pas, cela peut également être dû au fait que les reporters de couverture sont activés sans ajout de 'texte' ou de 'résumé de texte'. Dans la documentation: "Remarque: la définition de cette option écrase les valeurs par défaut. Ajoutez" texte "ou" résumé de texte "pour afficher un résumé de la couverture dans la sortie de la console." Source