Comment tester un seul fichier en utilisant Jest?
Je suis capable de tester plusieurs fichiers en utilisant Jest, mais je ne peux pas comprendre comment tester un seul fichier.
J'ai:
- Exécuter
npm install jest-cli --save-dev
- mise à Jour
package.json
: `{ ... "scripts": { "test": "la blague" } ... } - Écrit un certain nombre de tests.
L'Exécution de npm test
fonctionne comme prévu (actuellement il fonctionne 14 tests).
Comment tester un seul fichier, par exemple test app/foo/__tests__/bar.spec.js
?
J'ai essayé d'exécuter npm test app/foo/__tests__/bar.spec.js
(à partir de la racine du projet), mais j'obtiens ce qui suit erreur:
npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'
Merci
6 réponses
Si npm test
fonctionne, cela signifie que jest est installé globalement. Pour exécuter un test spécifique, vous devrez utiliser la commande jest
- {[0] } ne fonctionnera pas.
Vous pouvez donc lancer jest directement avec jest bar.spec.js
Note: vous n'avez pas besoin d'entrer le chemin complet de votre test: l'argument devient une expression rationnelle, donc il doit seulement faire partie du chemin complet.
Note 2.0: Si vous avez utilisé npm install -g jest
pour installer jest globalement,
changer comme npm install -g jest-cli
Tout ce que vous avez à faire est de changer l'incantation magique:
npm test -- SomeTestFileToRun
Le autonome --
est * Nix magique pour marquer la fin des options, ce qui signifie (pour NPM) que everying après cela est passé à la commande en cours d'exécution, dans ce cas jest
. En passant, vous pouvez afficher des notes d'utilisation de plaisanterie en disant
npm test -- --help
Quoi qu'il en soit, chanter
npm test -- Foo
Exécute les tests dans le fichier nommé (FooBar.js
). Vous devriez noter, cependant, que:
Jest traite le nom comme sensible à la casse, donc, si vous utilisez un système de fichiers insensible à la casse, mais préservant la casse (comme Windows NTFS), vous pourriez rencontrer ce qui semble être étrange.
La Plaisanterie semble traiter la spécification comme un préfixe.
Donc l'incantation ci-dessus sera
- Exécuter
FooBar.js
,Foo.js
etFooZilla.js
- mais pas exécuter
foo.js
L'utilisation de npm test
ne signifie pas que jest est installé globalement. Cela signifie simplement que "test" est mappé à l'aide de jest dans votre paquet.json
Ce qui suit est ce qui a fonctionné pour moi, au niveau racine du projet:
node_modules/.bin/jest [args]
Args peut être le fichier de test que vous souhaitez exécuter ou le répertoire contenant plusieurs fichiers.
Pour exécuter un test individuel:
ValidationUtil c'est mon module ValidationUtil.specs.js
npm test -t ValidationUtil
- t - > après avoir mis une expression rationnelle contenant le nom du test
Si vous utilisez yarn
vous pouvez ajouter la .spec.js
ou .test.js
fichier directement après:
yarn test src/lib/myfile.test.js
C'est la partie de mon package.json
, avec la plaisanterie installer un paquet (enlevé les parties pertinentes):
{
...
"scripts": {
"test": "jest",
"testw": "jest --watch",
"testc": "jest --coverage",
...
},
"devDependencies": {
"jest": "^18.1.0",
...
},
}
Si vous exécutez npm >= 5.2.0
et que vous avez installé la plaisanterie, localement, comme devDependencies
avec npm i -d jest
vous pouvez exécuter la plaisanterie sur un fichier en particulier en faisant npx jest /path/to/your/spec.js