web-dev-qa-db-fra.com

Exécuter un seul test avec Jest

Très simple, je veux exécuter un seul test avec Jest.

Je mets it.only ou describe.only mais il exécute tout un tas de tests. Je pense qu’il exécute tous les tests depuis mon dernier commit, mais il ne devrait pas avoir ce comportement avec le drapeau only explicitement, non?

Quelles sont les causes de ce comportement et comment exécuter un seul test?

56
jpenna

Jest parallélise les tests et il ne sait pas à l’avance quels tests il doit exécuter et lesquels ne doivent pas être exécutés. Cela signifie lorsque vous utilisez "fit", il n'exécutera qu'un test dans ce fichier, mais tous les autres fichiers de test de votre projet .

fit, fdescribe et it.only, describe.only ont le même objectif, ignorer d'autres étapes, n'exécutez que moi.

Source: https://github.com/facebook/jest/issues/698#issuecomment-177673281


Utilisez le mécanisme de filtrage jest lorsque vous exécutez vos tests, comme

jest --config=jest.config.json --watch

Vous pouvez filtrer les tests par testname ou filename, il suffit de suivre les instructions du terminal.

enter image description here

Appuyez sur p, puis tapez un nom de fichier.

enter image description here

Vous pouvez ensuite utiliser describe.only et it.only pour ignorer tous les autres tests du fichier filtré et testé.

61
hinok

it.only et describe.only fonctionnent uniquement pour le module dans lequel ils se trouvent. Si vous rencontrez des problèmes pour filtrer les tests dans plusieurs fichiers, vous pouvez utiliser jest -t name-of-spec, en filtrant les tests correspondant au nom de la spécification ( contre le nom décrit ou test).
Source: https://facebook.github.io/jest/docs/en/cli.html

Par exemple, je concentre le test que j'écris actuellement comme ceci (avec le script de test dans le package.json):
npm test -- -t "test foo"

14
rodgobbi

Pour moi, cela fonctionne si j'utilise 2 paramètres comme ceci:

yarn test --watch -f "src/...fullpath.../reducer.spec.js" -t "Name of the test"

--watch: est optionnel

-f: filtrera vos fichiers, donc si vous avez beaucoup de tests portant le même nom, spécifiez le chemin complet du fichier exact

-t: fonctionne avec le nom 'describe' ou le nom 'it' de votre test

3
tonco

c'est comme ça:

jest sometest.test.js -t "some expression to match a describe or a test"

il testera tous les fichiers avec le nom sometest.test.js et une correspondance basée sur l'option -t. Si vous souhaitez uniquement tester un fichier spécifique, vous pouvez le faire:

jest src/user/.../sometest.test.js
1
hossein alipour