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

133
demandé sur OrangeDog 2015-02-25 20:42:00

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

88
répondu ncuillery 2016-05-11 07:05:35

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 et FooZilla.js
  • mais pas exécuter foo.js
171
répondu Nicholas Carey 2018-04-25 18:12:55

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.

11
répondu AeroHil 2016-08-31 15:06:07

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

11
répondu cabaji99 2016-10-17 16:29:24

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

}
7
répondu Andreas Heissenberger 2017-02-10 15:25:20

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

1
répondu bmaggi 2018-07-27 00:04:59