Я запускаю тести Jest через npm test
. Jest запускає паралельно тести паралельно. Чи є спосіб зробити тести послідовними?
У мене є кілька тестів, що викликають сторонній код, який залежить від зміни поточної робочої директорії.
Я запускаю тести Jest через npm test
. Jest запускає паралельно тести паралельно. Чи є спосіб зробити тести послідовними?
У мене є кілька тестів, що викликають сторонній код, який залежить від зміни поточної робочої директорії.
Відповіді:
Параметри CLI задокументовані, а також доступні, виконавши команду jest --help
.
Ви побачите опцію , яку ви шукаєте: --runInBand
.
npm test -- --runInBand
вірно.
Я все ще знайомлюсь з Jest, але, схоже, описуючі блоки працюють синхронно, тоді як тестові блоки працюють асинхронно. Я виконую кілька блоків опису в зовнішньому описі, який виглядає приблизно так:
describe
describe
test1
test2
describe
test3
У цьому випадку test3
він не працює до 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
Налаштуйте жарт, щоб використовувати його, наприклад, у vice.config.js:
module.exports = {
...,
runner: 'jest-serial-runner'
};
Ви можете використовувати функцію проекту, щоб застосувати її лише до підмножини тестів. Дивіться https://jestjs.io/docs/en/configuration#projects-arraystring--projectconfig
Як скопійовано з https://github.com/facebook/jest/isissue/6194#issuecomment-419837314
test.spec.js
import { signuptests } from './signup'
import { logintests } from './login'
describe('Signup', signuptests)
describe('Login', logintests)
signup.js
export const signuptests = () => {
it('Should have login elements', () => {});
it('Should Signup', () => {}});
}
login.js
export const logintests = () => {
it('Should Login', () => {}});
}
npm test --runInBand
? Offtopic: Не впевнений, звідки походить назва "band". --runSequentially, мабуть, матиме більше сенсу :)