Jest와 함께 하나의 테스트만 실행
저는 Jest와 단 하나의 테스트만 실행하고 싶습니다.
사용합니다.it.only
아니면describe.only
.으로 약속한 만,다합니다만에 안 됩니다.only
깃발이 명시적으로 설정되어 있죠?
이 동작의 원인은 무엇이며 단일 테스트를 실행하려면 어떻게 해야 합니까?
Jest는 테스트 실행을 병렬화하고 어떤 테스트를 실행해야 하고 어떤 테스트를 실행해서는 안 되는지 미리 알 수 없습니다.즉, "적합"을 사용하면 해당 파일에서 하나의 테스트만 실행됩니다. 그러나 프로젝트의 다른 모든 테스트 파일은 여전히 실행됩니다.
fit
,fdescribe
그리고.it.only
,describe.only
같은 목적을 가지고 있습니다: 다른 시험은 건너뛰고 나만 실행하는 것입니다.
출처 : https://github.com/facebook/jest/issues/698#issuecomment-177673281
Jest 필터링 메커니즘을 사용합니다.검사를 할 때는, 예를 들면,
jest --config=jest.config.json --watch
당신은 a에 의해 테스트를 필터링할 수 있습니다.testname
아니면filename
지침을 만 하면 됩니다 터미널에 있는 지침대로만 하면 됩니다.
p
합니다를 입력합니다.
그러면 사용할 수 있습니다.describe.only
그리고.it.only
필터링되고 테스트된 파일에서 다른 모든 테스트를 생략합니다.
it.only
그리고.describe.only
모듈에 대해서만 작동합니다.데 다음을 할 수 jest -t name-of-spec
또는 테스트의 ( 기술 테스트 의).
출처: Jest CLI 옵션
를 들면, 쓰고 시험을 초점을 을 ) ()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
저의 경우 다음과 같은 두 개의 매개 변수를 사용하면 작동합니다.
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
제스트가 당신과 같은 일을 할 수 있도록 명령어를 만들었습니다.이 작업은 진행 중이지만 다음과 같이 작업해야 합니다.
.only
트합니다가 합니다..only
.
grep --exclude-dir=node_modules -rl . -e 'test.only\|it.only\|describe.only' --null | tr '\n' ' ' | xargs -0 npx jest | grep . || npx jest
일부 에지 경우에는 작동하지 않더라도 참조로 사용할 수 있습니다.여기서 좀 더 최신 상태를 유지할 수도 있겠습니다.
이에 대한 별칭을 생성하거나 셸 스크립트 또는 패키지에 넣을 수 있습니다.json 대본.
: The| grep . || npx jest
는 입력 한 번 .xargs되지 않기 .보통은 필요 없을 수도 있습니다.
전체 경로를 입력하려고 하면 파일이 존재하고 몇 개의 주장이 있더라도 해당 패턴과 일치하는 결과가 0으로 나타납니다.
https://stackoverflow.com/a/44446669/3957754 에 따르면 .only는 농담으로 무시되며 앞으로도 무시됩니다.
이것은 저에게 효과가 있었습니다. 단지 리눅스 사용자들에게만 효과가 있었습니다.
- 배시 스크립트를 작성합니다.
- grep을 사용하여 "only"라는 단어가 포함된 파일 찾기
- jest foo.test.js bar.test.js bar.test.js 파일 전달
test.sh
filtered_test=$(grep -rnwl ./src/test -e "test.only\|it.only\|describe.only" --include \*.js | tr '\n' ' ')
jest --coverage --silent --runInBand --detectOpenHandles $filtered_test
꾸러미의json
"scripts": {
"start": "...",
"dev": "...",
"test": "./src/test/test.sh"
},
결과: 가 있는 테스트만 실행됩니다.
참고1: 테스트가 다음과 같이 진행되지 않을 경우src/test
bash 스크립트 및 패키지에서 해당 값을 변경합니다.json
참고 2: 간단한 npm 모듈을 만들어 쉽게 실행할 수 있습니다.
간단한 자동화된 해결 방법은 bash 스크립트를 사용하여 jest 명령을 생성하고 실행하는 것입니다.
tools/runJest.sh
#!/bin/bash
function main() {
local testDir="test"
local testFiles="$(grep -rl '\.only(' $testDir | grep '\.test\.js$' | xargs)"
if [ -z "$testFiles" ]; then
runJest "--testPathPattern=test/unit"
else
runJest "$testFiles"
fi
}
function runJest() {
local testFiles="$1"
local cmd="jest --logHeapUsage -c jest.config.js $testFiles"
echo "Running cmd: $cmd"
$cmd
}
main "$@"
작업 내용:
- 모든 테스트 파일을 찾습니다.
.only(
그 안에 - 있는 경우에는
.only(
hits, hits가 있는 파일에서만 jest를 실행 - 그렇지 않으면 일반 jest config를 실행합니다.
실행 가능한 권한을 bash 스크립트에 추가해야 합니다.
chmod +x tools/runJest.sh
또한 스크립트의 검색 기준(폴더, 파일 이름 패턴)을 특정 설정으로 수정합니다.
꾸러미의json 스크립트.test
대신에
{
"scripts": {
"test": "jest --logHeapUsage --testPathPattern=test/unit -c jest.config.js"
}
}
작업:
{
"scripts": {
"test": "tools/runJest.sh"
}
}
언급URL : https://stackoverflow.com/questions/44446626/run-only-one-test-with-jest
'programing' 카테고리의 다른 글
null-terminal이 아닌 문자열의 strstr() (0) | 2023.10.16 |
---|---|
여러 노드 유형에 대해 jstree 마우스 오른쪽 버튼 클릭 상황에 맞는 메뉴 구성 (0) | 2023.10.16 |
속성 유형이 내부 유형을 사용하므로 public으로 선언할 수 없습니다. (0) | 2023.10.16 |
wo commerce는 제품을 카트에 추가한 후 firefox에서 카트가 비어 있다고 표시합니다. (0) | 2023.10.16 |
자바스크립트:마우스 버튼이 아래로 내려갔는지 확인하시겠습니까? (0) | 2023.10.16 |