Jest로 하나의 테스트 만 실행


97

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

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

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



"중복 플래그"를 수락하면 "귀하의 질문을 중복으로 표시하여 향후 독자가 원래 질문으로 이동하도록하고 여기에 추가 답변이 게시되지 않도록합니다." 각 질문과 답변이 다른 접근 방식을 취하고 있기 때문에 정확히 동일하다고 생각하지 않습니다.
jpenna

@jpenna : 원래 질문을보세요. 같은 대답이 주어졌습니다.
Dan Dascalescu

답변:


124

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필터링 테스트 파일에서 다른 모든 테스트를하는 건너 뜁니다.


1
이 필터를 파일별로 수행하고 있지만 이상 .only합니다. 동일한 파일의 테스트에서만 작동합니까?
jpenna 2017-06-08

2
나는 소스 코드에서 .only를 실행 취소하고 커밋하는 것을 잊었 기 때문에 .only를 훨씬 더 좋아합니다.
Dziamid

3
테스트를 건너 뛰더라도 각 예제에서 테스트중인 코드를 평가하는 것 같습니다. 2019 년에 단일 테스트 만 실행하는 방법이 정말 없나요?
adaam

@adaam 귀하의 질문을 제대로 이해했는지 확실하지 않으므로 틀리면 수정하십시오. 테스트가 별도의 파일에있는 경우 패턴을 사용하여 명시 적으로 테스트를 실행하면 특정 파일의 코드 만 실행됩니다. 특정 파일에 대한 코드가 실행되면 사용자가 사용하는 경우에도 해당 파일의 전체 코드는 너무 구문 분석 it.only이나 it.skip구문 오류가 하나의 테스트를 위해, 모든 테스트가 실패합니다. 물론 패턴에 의해 제외 된 파일의 코드는 실행되지 않습니다. imgur.com/z9FlQEZ
Dawid Karabin 19-02-09

@hinok Carousel 구성 요소에 console.log를 붙이고 테스트 실행기를 다시 실행하십시오. 저에게는 if.only시계 패턴에서 해당 구성 요소에 대해 건너 뛰거나 건너 뛰지 않은 테스트가 많은 횟수만큼 Carousel 구성 요소의 console.logs를 사용하더라도 .
adaam

29

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

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


4
이것은 아직도 내 경우에는 모든 단일 테스트를 실행하고 나는 왜 아무 생각이 없다
케니

내가 생각할 수있는 유일한 설명은 모든 단일 테스트 이름 (또는 테스트 describe블록)에 존재하는 문자열 인수를 전달한다는 것입니다 . 이 경우 집중하려는 정확한 테스트 이름으로 범위를 좁혀 야합니다.
rodgobbi

이 답변은 다른 질문에 대한 훨씬 더 적합한 것 같다 stackoverflow.com/questions/42827054/...
千木郷

8

다음과 같습니다.

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

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

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

launch.json특정 테스트 케이스에서 테스트를 트리거 하는 VSCode 구성 파일 에서이 옵션을 구현하려는 사람들을 위해 : medium.com/better-programming/…
Gus

8

나를 위해 다음과 같이 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.