J'ai un test 'fonctionne avec des enfants imbriqués' dans le fichier fix-order-test.js.
L'exécution du ci-dessous exécute tous les tests du fichier.
jest fix-order-test
Comment puis-je exécuter un seul test? Ce qui suit ne fonctionne pas car il cherche un fichier de la regex spécifiée.
jest 'works with nested children'
À partir de la ligne de commande, utilisez l'indicateur --testNamePattern
ou -t
.
jest -t 'fix-order-test'
Cela n'exécutera que les tests correspondant au modèle de nom de test que vous avez fourni. C'est dans le Jest docs .
Vous pouvez également exécuter des tests en mode de surveillance jest --watch
, puis appuyer sur p filtrer les tests en tapant le nom du fichier de test ou t exécuter un seul nom de test.
documentation de jest recommande ce qui suit:
Si un test échoue, l'une des premières choses à vérifier devrait être si le test échoue alors que c'est le seul test en cours d'exécution. En plaisantant il est simple d'exécuter un seul test - il suffit de modifier temporairement cette
test
commande à untest.only
test.only('this will be the only test that runs', () => { expect(true).toBe(false); });
Comme mentionné dans d'autres réponses,test.only
se contente de filtrer les autres tests du même fichier . Donc, les tests dans d'autres fichiers seront toujours exécutés. ????
Donc, pour exécuter un seul test, il existe deux approches:
Option 1: Si votre nom de test est unique, vous pouvez entrer t
en mode veille et entrer le nom du test que vous souhaitez exécuter.
Option 2:
p
en mode veille pour entrer une expression régulière pour le nom de fichier que vous souhaitez exécuter. (Les commandes pertinentes comme celle-ci sont affichées lorsque vous exécutez Jest en mode veille).it
en it.only
sur le test que vous souhaitez exécuter.Avec l’une des approches ci-dessus, Jest exécutera uniquement le test unique dans le fichier que vous avez spécifié. ????
Vous pouvez également utiliser f
ou x
pour faire le point ou exclure un test. Par exemple
fit('only this test will run', () => {
expect(true).toBe(false);
});
it('this test will not run', () => {
expect(true).toBe(false);
});
xit('this test will be ignored', () => {
expect(true).toBe(false);
});
Commande:
node <path-to-jest> -i <you-test-file> -c <jest-config> -t "<test-block-name>"
<path-to-jest>
: node_modules\jest\bin\jest.js
node_modules/.bin/jest
-i <you-test-file>
: chemin du fichier avec des tests (js
ou ts
)-c <jest-config>
: chemin d'accès à un fichier de configuration Jest (JSON) séparé, si vous conservez votre configuration Jest dans package.json
, vous n'avez pas à spécifier ce paramètre (Jest le trouvera sans votre aide)-t <the-name-of-test-block>
: il s’agit en fait d’un nom (le premier paramètre) du bloc describe(...)
, it(...)
ou test(...)
.Exemple:
describe("math tests", () => {
it("1 + 1 = 2", () => {
expect(1 + 1).toBe(2);
});
it("-1 * -1 !== -1", () => {
expect(-1 * -1).not.toBe(-1);
});
});
Donc, la commande
node node_modules/jest/bin/jest.js -i test/math-tests.js -c test/tests-config.json -t "1 + 1 = 2"
testera it("1 + 1 = 2", ...)
, mais si vous modifiez le paramètre -t
en "math tests"
, il exécutera les deux tests à partir du bloc describe("math tests",...)
.
Remarques:
node_modules/.bin/jest
par node_modules\jest\bin\jest.js
.'--inspect-brk'
à la commande.Une fois Jest installé, vous pouvez simplifier la syntaxe de cette commande (ci-dessus) en utilisant les scripts NPM . Dans "package.json"
, ajoutez un nouveau script à la section "scripts"
:
"scripts": {
"test:math": "jest -i test/my-tests.js -t \"math tests\"",
}
Dans ce cas, nous utilisons un alias 'jest'
au lieu d’en écrire le chemin complet. De plus, nous ne spécifions pas le chemin du fichier de configuration car nous pouvons aussi le placer dans "package.json"
et Jest le vérifiera par défaut. Maintenant, vous pouvez exécuter la commande:
npm run test:math
et le bloc "math tests"
avec deux tests sera exécuté. Ou bien sûr, vous pouvez spécifier un test particulier par son nom.
Une autre option consisterait à extraire le paramètre <the-name-of-test-block>
en dehors du script "test:math"
et à le transmettre à partir de la commande NPM:
package.json:
"scripts": {
"test:math": "jest -i test/my-tests.js -t",
}
Commande:
npm run test:math "math tests"
Vous pouvez maintenant gérer le nom du ou des tests d’exécution avec une commande beaucoup plus courte.
Remarques:
'jest'
fonctionnera avec les scripts NPM car npm fait de
"./node_modules/.bin"
la première entrée de la variable d'environnementPATH
lors de l'exécution de scripts de cycle de vie. Cela fonctionnera donc bien, même si votre programme n'est pas installé globalement ( blog NPM )
node
.Si vous utilisez du code Visual Studio, vous pouvez en tirer parti et exécuter le test actuellement sélectionné (dans l'éditeur de code) en appuyant sur le bouton F5
. Pour ce faire, nous devrons créer un nouveau bloc de configuration launch dans le fichier ".vscode/launch.json"
. Dans cette configuration, nous allons utiliser variables prédéfinies qui sont remplacées par les valeurs appropriées (malheureusement pas toujours ) lors de l'exécution. Parmi tous les disponibles, nous ne sommes intéressés que par ceux-ci:
${relativeFile}
- le fichier ouvert en cours par rapport à ${workspaceFolder}
${selectedText}
- le texte actuellement sélectionné dans le fichier actifMais avant d’écrire la configuration de lancement, nous devrions ajouter le script 'test'
dans notre 'package.json'
(si nous ne l’avons pas encore).
package.json:
"scripts": {
"test": "jest"
}
nous pourrons ensuite l’utiliser dans notre configuration de lancement.
Lancer la configuration:
{
"type": "node",
"request": "launch",
"name": "Run selected Jest test",
"runtimeExecutable": "npm",
"runtimeArgs": [
"run-script",
"test"
],
"args": [
"--",
"-i",
"${relativeFile}",
"-t",
"${selectedText}"
],
"console": "integratedTerminal",
}
il fait en réalité la même chose que les commandes décrites précédemment dans cette réponse. Maintenant que tout est prêt, nous pouvons exécuter tous les tests souhaités sans avoir à réécrire les paramètres de commande manuellement.
Voici tout ce que vous devez faire:
'F5'
.Et le tour est joué!
Maintenant, pour lancer un test, ouvrez-le simplement dans l'éditeur, sélectionnez son nom et appuyez sur F5.
Malheureusement, il ne sera pas "voila" sur les machines Windows car elles substituent (qui sait pourquoi) la variable ${relativeFile}
au chemin ayant des barres obliques inversées et Jest ne comprendrait pas un tel chemin.
Remarques:
'--inspect-brk'
.'package.json'
.Comme dit ci-dessus, vous pouvez exécuter la commande
jest -t 'fix-order-test'
Si vous avez une it
dans un bloc describe
, vous devez exécuter
jest -t '<describeString> <itString>'
avec latest jest version , vous pouvez utiliser l’une des méthodes suivantes pour n’exécuter qu’un seul test, identique pour la suite de tests.
it.only('test 1', () => {})
test.only('test 1', () => {})
fit('test 1', () => {})
jest 'test 1'
peut aussi fonctionner si le nom du test est unique.
Dans VS Code, cela me permet de lancer/déboguer un seul test Jest, avec des points d'arrêt: https://github.com/Microsoft/vscode-recipes/tree/master/debugging-jest-tests
Mon launch.json
a ceci à l'intérieur:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Jest All",
"program": "${workspaceFolder}/node_modules/.bin/jest",
"args": ["--runInBand"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"windows": {
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
}
},
{
"type": "node",
"request": "launch",
"name": "Jest Current File",
"program": "${workspaceFolder}/node_modules/.bin/jest",
"args": ["${relativeFile}"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"windows": {
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
}
}
]
}
et ceci dans package.json
:
"scripts": {
"test": "jest"
}
test
(ou it
) par test.only
(ou it.only
). Pour exécuter 1 suite de tests (plusieurs tests), remplacez describe
par describe.only
.Jest Current File
../node_modules/.bin/jest --config test/jest-unit-config.json --runInBand src/components/OpenForm/OpenForm.spec.js -t 'show expanded'
./node_modules/.bin/...
est un moyen merveilleux d’accéder au binaire jest (ou mocha ou ...) installé localement et fourni avec le paquet installé localement. (Oui, dans vos scripts npm, vous pouvez jest
sans rien auparavant, mais c'est pratique en ligne de commande ... (c'est également un bon début pour votre configuration de débogage, quel que soit le IDE que vous utilisez ...)package.json
), c’est ce dont vous avez besoin.--runInBand
- comme dit, je ne sais pas à propos de votre configuration, mais si vous vous concentrez sur le développement/la correction d'un seul test, vous ne voulez plutôt pas traiter avec des travailleurs Web ...-t
pour ne pas exécuter tous les tests de ce fichier, mais un seul (ici: celui qui a quelque chose dont le nom est "show expanded
"). Le même effet peut être obtenu en collant .only()
dans ce fichier.Il existe maintenant un plugin Nice jest pour ce jest-watch-typeahead
appelé, ce processus est beaucoup plus simple.
Si vous avez jest
exécuté en tant que commande de script, comme npm test
, vous devez utiliser la commande suivante pour que cela fonctionne:
npm test -- -t "fix order test"