web-dev-qa-db-fra.com

Comment exécuter les tests Jest séquentiellement?

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.

102
Martin Konicek

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.

161
ncuillery

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.

7
SuperCodeBrah

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()
})
3
Krzysztof Nowak

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.

1
Joachim Lous