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?
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.
Appuyez sur p
, puis tapez un nom de fichier.
Vous pouvez ensuite utiliser describe.only
et it.only
pour ignorer tous les autres tests du fichier filtré et testé.
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"
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
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