Как запускать тесты Jest последовательно?

Я запускаю тесты Jest через npm test. По умолчанию Jest запускает тесты параллельно. Есть ли способ, чтобы тесты выполнялись последовательно?

У меня есть несколько тестов, вызывающих сторонний код, который зависит от изменения текущего рабочего каталога.

Ответ 1

Параметры CLI не документируются, но доступны, запустив команду jest --help.

Затем вы увидите нужную опцию: --runInBand.

Ответ 2

Я все еще знакомлюсь с Jest, но похоже, что описательные блоки работают синхронно, тогда как тестовые блоки работают асинхронно. Я запускаю несколько блоков описаний внутри внешнего описания, которое выглядит примерно так:

describe
    describe
        test1
        test2

    describe
        test3

В этом случае test3 не запускается до test2 пор, пока test2 будет завершен, поскольку test3 находится в блоке описания, который следует за блоком описания, который содержит test2.

Ответ 3

Это сработало для меня, обеспечив последовательный запуск хорошо разделенных на модули тестов:

1) Храните тесты в отдельных файлах, но без spec/test в именовании.

|__testsToRunSequentially.test.js
|__tests
   |__testSuite1.js
   |__testSuite2.js
   |__index.js

2) Файл с набором тестов также должен выглядеть следующим образом (testSuite1.js):

export const testSuite1 = () => describe(/*your suite inside*/)

3) Импортируйте их в testToRunSequentially.test.js и запустите с --runInBand:

import { testSuite1, testSuite2 } from './tests'

describe('sequentially run tests', () => {
   testSuite1()
   testSuite2()
})

Ответ 4

Используйте серийный тестовый бегун:

npm install jest-serial-runner --save-dev

Настройте шутку, чтобы использовать его, например, в jest.config.js:

module.exports = {
   ...,
   runner: 'jest-serial-runner'
};

Вы можете использовать функцию проекта, чтобы использовать ее только для подмножества тестов.