Je suis capable de tester plusieurs fichiers en utilisant Jest, mais je ne peux pas comprendre comment tester un seul fichier.
J'ai:
npm install jest-cli --save-dev
package.json
: `{..." scripts ": {" test ":" jest "} ...}Lancer npm test
fonctionne comme prévu (il exécute actuellement 14 tests).
Comment tester un seul fichier, par exemple test app/foo/__tests__/bar.spec.js
?
J'ai essayé de lancer npm test app/foo/__tests__/bar.spec.js
(à la racine du projet), mais le message d'erreur suivant s'affiche:
npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'
Merci
Pour exécuter un test spécifique, vous devez utiliser la commande jest
. npm test
ne fonctionnera pas. Pour accéder à jest
directement sur la ligne de commande, installez-la via npm i -g jest-cli
ou yarn global add jest-cli
.
Ensuite, lancez simplement votre test spécifique avec jest bar.spec.js
.
Note: Vous n'avez pas à entrer le chemin complet de votre fichier de test. L'argument est interprété comme une expression rationnelle. Toute partie du chemin complet identifiant de manière unique un fichier suffit.
Tout ce que vous avez à faire est de chanter l'incantation de la magie:
npm test -- SomeTestFileToRun
Le --
autonome est * magique pour marquer la fin des options, ce qui signifie (pour NPM) que tout ce qui suit est passé à la commande en cours d'exécution, dans ce cas jest
. De plus, vous pouvez afficher les notes d'utilisation de la plaisanterie en disant
npm test -- --help
De toute façon, en chantant
npm test -- Foo
exécute les tests dans le fichier nommé (FooBar.js
). Notez cependant que:
Jest traite le nom comme étant sensible à la casse. Par conséquent, si vous utilisez un système de fichiers respectant la casse et respectant la casse (comme Windows NTFS), vous risquez de rencontrer des difficultés.
Jest semble traiter la spécification comme un préfixe.
Donc, l'incantation ci-dessus
FooBar.js
, Foo.js
et FooZilla.js
foo.js
Pour exécuter un test individuel:
ValidationUtilise son module ValidationUtil.spec.js
npm test -t ValidationUtil
-t -> après avoir mis une expression régulière contenant le nom du test
L'utilisation de npm test
ne signifie pas que jest est installé globalement. Cela signifie simplement que "test" est associé à l'utilisation de jest dans votre package.json
Voici ce qui a fonctionné pour moi, au niveau racine du projet:
node_modules/.bin/jest [args]
les arguments peuvent être le fichier de test que vous voulez exécuter ou le répertoire contenant plusieurs fichiers.
si vous utilisez yarn
, vous pouvez ajouter le fichier .spec.js
ou .test.js
directement après:
yarn test src/lib/myfile.test.js
Voici la partie de mon package.json
avec jest install en tant que paquet local (les parties correspondantes ont été supprimées):
{
...
"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é jest localement en tant que devDependencies
avec npm i -d jest
, vous pouvez exécuter jest sur un fichier particulier en exécutant npx jest /path/to/your/spec.js
.
C’est ainsi que j’exécute dynamiquement des tests sur des fichiers spécifiques sans avoir à redémarrer le test. Mon projet de réaction a été créé était create-react-app
il surveille donc les modifications et exécute automatiquement les tests lorsque je les modifie.
Voilà donc ce que je vois à la fin des résultats du test sur le terminal.
Test Suites: 16 passed, 16 total
Tests: 98 passed, 98 total
Snapshots: 0 total
Time: 5.048s
Ran all test suites.
Watch Usage: Press w to show more.
Appuyez sur W
Watch Usage
› Press f to run only failed tests.
› Press o to only run tests related to changed files.
› Press q to quit watch mode.
› Press p to filter by a filename regex pattern.
› Press t to filter by a test name regex pattern.
› Press Enter to trigger a test run.
puis appuyez sur P
Pattern Mode Usage
› Press Esc to exit pattern mode.
› Press Enter to filter by a filenames regex pattern.
pattern ›
Start typing to filter by a filename regex pattern.
c’est après avoir voulu exécuter le fichier 'index.es6.js' dans le dossier 'Connexion'
Pattern Mode Usage
› Press Esc to exit pattern mode.
› Press Enter to filter by a filenames regex pattern.
pattern › login/index
Pattern matches 1 file
› src/containers/Login/index.es6.test.js
C’est comme ça que j’effectue des tests sur des fichiers spécifiques.
Vous avez deux options:
node '/Users/complete-path-to-you-project/your-project/node_modules/.bin/jest' '/Users/complete-path-to-you-project/your-project/path-to-your-file-within-the-project/your-file.spec.ts'
Cela vous évite d'installer Jest globalement. Vous utilisez la blague utilisée par votre projet.
Je viens d'installer la blague comme globalement, puis de lancer jest myFileToTest.spec.js
et cela a fonctionné