Ответ 1
Параметры CLI не документируются, но доступны, запустив команду jest --help
.
Затем вы увидите нужную опцию: --runInBand
.
Я запускаю тесты Jest через npm test
. По умолчанию Jest запускает тесты параллельно. Есть ли способ, чтобы тесты выполнялись последовательно?
У меня есть несколько тестов, вызывающих сторонний код, который зависит от изменения текущего рабочего каталога.
Параметры CLI не документируются, но доступны, запустив команду jest --help
.
Затем вы увидите нужную опцию: --runInBand
.
Я все еще знакомлюсь с Jest, но похоже, что описательные блоки работают синхронно, тогда как тестовые блоки работают асинхронно. Я запускаю несколько блоков описаний внутри внешнего описания, которое выглядит примерно так:
describe
describe
test1
test2
describe
test3
В этом случае test3
не запускается до test2
пор, пока test2
будет завершен, поскольку test3
находится в блоке описания, который следует за блоком описания, который содержит test2
.
Это сработало для меня, обеспечив последовательный запуск хорошо разделенных на модули тестов:
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()
})
Используйте серийный тестовый бегун:
npm install jest-serial-runner --save-dev
Настройте шутку, чтобы использовать его, например, в jest.config.js:
module.exports = {
...,
runner: 'jest-serial-runner'
};
Вы можете использовать функцию проекта, чтобы использовать ее только для подмножества тестов.