[javascript] Jest로 하나의 테스트 만 실행

매우 간단합니다. Jest로 테스트를 하나만 실행하고 싶습니다.

내가 넣어 it.only또는 describe.only하지만 여전히 테스트를 훨씬을 실행합니다. 마지막 커밋 이후 모든 테스트를 실행한다고 생각하지만 only명시 적으로 설정된 플래그로 이러한 동작이 없어야합니다 .

이 동작의 원인은 무엇이며 단일 테스트를 실행하는 방법은 무엇입니까?



답변

Jest는 테스트 실행을 병렬화 하고 실행해야하는 테스트와 실행 하지 않아야하는 테스트를 미리 알지 못합니다. 즉 , “fit”을 사용하면 해당 파일에서 하나의 테스트 만 실행되지만 프로젝트의 다른 모든 테스트 파일은 계속 실행됩니다 .

fit, fdescribeit.only, describe.only동일한 목적을 가지고 다른 테스트를 건너 뛰고 나만 실행하십시오.

출처 : https://github.com/facebook/jest/issues/698#issuecomment-177673281


다음 jest과 같은 테스트를 실행할 때 필터링 메커니즘을 사용하십시오.

jest --config=jest.config.json --watch

testname또는로 테스트를 필터링 할 수 있습니다 filename. 터미널의 지침을 따르기 만하면됩니다.

여기에 이미지 설명 입력

을 누른 p다음 파일 이름 입력

여기에 이미지 설명 입력

그럼 당신은 사용할 수 있습니다 describe.onlyit.only필터링 테스트 파일에서 다른 모든 테스트를하는 건너 뜁니다.


답변

it.onlydescribe.only여러 파일에서 필터 테스트에 문제가있는 경우에만이에있는 모듈에 대한 작업., 당신은 사용할 수 있습니다 jest -t name-of-spec(설명 또는 테스트에서 이름에 대해 일치) 사양 이름과 일치 테스트를 필터링.
출처 : https://facebook.github.io/jest/docs/en/cli.html

예를 들어, 현재 다음과 같이 작성중인 테스트에 집중합니다 (에서 테스트 스크립트 사용 package.json).
npm test -- -t "test foo"


답변

다음과 같습니다.

jest sometest.test.js -t "some expression to match a describe or a test"

이 이름을 가진 모든 파일을 테스트 할 sometest.test.js경우에만이 작업을 수행 할 수있는 특정 파일을 테스트하려는 경우, -t 옵션에 따라 매칭을 :

jest src/user/.../sometest.test.js


답변

나를 위해 다음과 같이 2 개의 매개 변수를 사용하면 작동합니다.

yarn test --watch -f "src/...fullpath.../reducer.spec.js" -t "Name of the test"

플래그 :

--watch: is optional

-f: will do filtering of your files, so if you have a lot of tests with the same name, specify the full path to the exact file

-t: works with 'describe' name or 'it' name of your test


답변