web-dev-qa-db-fra.com

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
  • Mis à jour package.json: `{..." scripts ": {" test ":" jest "} ...}
  • Écrit un certain nombre de tests.

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

239
Musket

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.

182
ncuillery

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

  • Exécuter FooBar.js, Foo.js et FooZilla.js
  • Mais PAS exécuter foo.js
284
Nicholas Carey

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

21
cabaji99

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.

17
AeroHil

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",
    ...
  },

}
10
Andreas Heissenberger

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.

4
bmaggi

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.

1
deko

Vous avez deux options:

  • Option 1: ligne de commande. Vous pouvez exécuter la commande suivante
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.

  • Option 2: Si vous utilisez Code VS , vous avez un excellent plugin pour le faire: Jest Runner . Il vous permet non seulement d'exécuter des tests fichier par fichier, mais même des suites et spécifications spécifiques par simple clic droit sur les tests que vous souhaitez exécuter.
0
Hay OUE

Je viens d'installer la blague comme globalement, puis de lancer jest myFileToTest.spec.js et cela a fonctionné

0
URL87