Je lance des tests Jest via npm test
. Jest exécute des tests en parallèle par défaut. Est-il possible de faire les tests en séquence?
J'ai quelques tests appelant du code tiers qui repose sur la modification du répertoire de travail actuel.
Les options de la CLI ne sont pas documentées mais accessibles en exécutant la commande jest --help
.
Ensuite, vous verrez l’option que vous recherchez: --runInBand
.
Je me familiarise encore avec Jest, mais il semble que les blocs décrits fonctionnent de manière synchrone alors que les blocs de test fonctionnent de manière asynchrone. J'exécute plusieurs blocs dans une description externe qui ressemble à ceci:
describe
describe
test1
test2
describe
test3
Dans ce cas, test3
ne fonctionne pas tant que test2
est complet car test3
est dans un bloc de description qui suit le bloc de description qui contient test2
.
Cela a fonctionné pour moi en assurant un fonctionnement séquentiel de tests séparés bien modulés:
1) Gardez les tests dans des fichiers séparés, mais sans spec/test
en nommant.
|__testsToRunSequentially.test.js
|__tests
|__testSuite1.js
|__testSuite2.js
|__index.js
2) Le fichier avec la suite de tests doit également ressembler à ceci (testSuite1.js):
export const testSuite1 = () => describe(/*your suite inside*/)
3) Importez-les dans testToRunSequentially.test.js
et courir avec --runInBand
:
import { testSuite1, testSuite2 } from './tests'
describe('sequentially run tests', () => {
testSuite1()
testSuite2()
})
Utilisez le programme d'essai en série:
npm install jest-serial-runner --save-dev
Configurez une blague pour l'utiliser, par exemple dans jest.config.js:
module.exports = {
...,
runner: 'jest-serial-runner'
};
Vous pouvez utiliser la fonctionnalité de projet pour ne l'utiliser que pour un sous-ensemble de tests.