Jest 테스트를 순차적으로 실행하는 방법은 무엇입니까?


140

를 통해 Jest 테스트를 실행하고 npm test있습니다. Jest는 기본적으로 테스트를 병렬로 실행합니다. 테스트를 순차적으로 실행할 수있는 방법이 있습니까?

현재 작업 디렉토리 변경에 의존하는 타사 코드를 호출하는 테스트가 있습니다.

답변:


220

CLI 옵션은 문서화 되어 있으며 명령을 실행하여 액세스 할 수도 있습니다 jest --help.

찾고있는 옵션이 표시 --runInBand됩니다..


5
고마워요! 그렇 npm test --runInBand습니까? 주제 : "band"라는 이름의 출처가 확실하지 않습니다. --runSequentially 아마 더 이해가 될 것입니다 :)
Martin Konicek

13
@MartinKonicek npm test -- --runInBand이 맞습니다.
Ondrej Slinták

40
불행히도, 실행 순서를 제어 할 수 없다는 사실 때문에 Jest는 통합 테스트에 거의 쓸모가 없습니다.
Evan B.

19
@Evan 특정 순서로 테스트를 실행해야한다는 것은 냄새입니다.
Nico Van Belle

18
@NicoVanBelle 이는 충분히 복잡한 상태 저장 시스템의 진정한 엔드 투 엔드 테스트 비용입니다. 대안을 사용할 수는 있지만 스택의 주요 부분을 순진하게 스왑 아웃하거나 테스트간에 데이터베이스 재설정을 엄청나게 느리게하지 않는 솔루션을 아직 보지 못했습니다. Jest가 나쁜 도구라는 것을 의미하지는 않습니다.이 특정 종류의 테스트에는 잘못된 도구입니다.
Evan B.

17

여전히 Jest에 익숙하지만 테스트 블록은 비동기 적으로 실행되는 반면 블록을 설명하는 것은 동 기적으로 실행되는 것으로 보입니다. 외부 설명 내에서 다음과 같은 여러 설명 블록을 실행하고 있습니다.

describe
    describe
        test1
        test2

    describe
        test3

이 경우을 포함 하는 describe 블록 다음에 오는 describe 블록에 있으므로 완료 test3될 때까지 실행되지 않습니다 .test2test3test2


1
어쩌면 그것은 여전히 ​​병렬로 실행될 것입니다.
LCB

대단하다. 먼저 누락 된 환경 변수로 동작을 확인한 다음 변수를 설정하고 추가 테스트를 수행 할 수 있습니다.
Attaque Attaque

14

그것은 훌륭하게 분리 된 모듈 테스트의 순차적 실행을 보장하기 위해 일했습니다.

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()
})

이미 두 개의 테스트 스위트가 있으므로 --runInBand로 실행할 필요가 없습니다. Child Test Suites는 순차적으로 실행됩니다.
리키 쿠마르

10

시리얼 테스트 러너를 사용하십시오 :

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

jest.config.js와 같이 jest를 사용하도록 설정하십시오.

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

프로젝트 기능을 사용하여 테스트 서브 세트에만 적용 할 수 있습니다. https://jestjs.io/docs/en/configuration#projects-arraystring--projectconfig를 참조 하십시오.


프로젝트 기능을 사용하여 테스트의 서브 세트에만 사용할 수 있습니다. , 어떻게?
Nux

1
@Nux Jest의 '프로젝트'구성 설정을 사용하면 특정 테스트 세트에 다른 구성 설정을 선택적으로 적용 할 수 있습니다. 문서 및 예제에 대한 링크로 업데이트되었습니다.
Joachim Lous

4

https://github.com/facebook/jest/issues/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', () => {}});
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.