Jest를 사용하여 단일 파일을 어떻게 테스트합니까?


359

Jest를 사용하여 여러 파일을 테스트 할 수 있지만 단일 파일을 테스트하는 방법을 알 수 없습니다.

나는 가지고있다:

  • 운영 npm install jest-cli --save-dev
  • 업데이트 package.json:`{... "scripts": { "test": "jest"} ...}
  • 여러 테스트를 작성했습니다.

실행 npm test이 예상대로 작동합니다 (현재 14 개의 테스트가 실행 됨).

테스트와 같은 단일 파일을 어떻게 테스트 app/foo/__tests__/bar.spec.js합니까?

npm test app/foo/__tests__/bar.spec.js(프로젝트 루트에서) 실행을 시도했지만 다음 오류가 발생합니다.

npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'

감사

답변:


296

특정 테스트를 실행하려면 jest명령 을 사용해야합니다 . npm test작동 안 할 것이다. 액세스에 jest직접 명령 줄을 통해 설치 npm i -g jest-cli하거나 yarn global add jest-cli.

그런 다음로 특정 테스트를 실행하십시오 jest bar.spec.js.

참고 : 테스트 파일의 전체 경로를 입력하지 않아도됩니다. 인수는 정규 표현식으로 해석됩니다. 파일을 고유하게 식별하는 전체 경로의 모든 부분이 충분합니다.


5
불행히도 이것은 나를 위해 작동하지 않습니다. 실행 jest bar.spec.js하면 jest: command not found. Jest가 설치되었음을 확인했습니다 ( npm list -g jest표시 jest@0.1.37). FWIW, npm test그것을 사용 하여 실행할 때 사용합니다 jest-cli.
Musket

4
예, jest-cli올바른 모듈 npm install -g jest-cli입니다. 전역으로 설치하십시오 . jestnpm에 ... 뭔가 다른
ncuillery

56
맞습니다. npm 테스트 작업은 jest가 전 세계적으로 설치되었음을 의미하지 않습니다. jest가 프로젝트 내에 설치되어 있음을 의미합니다.
Chiedo

20
@ChiedoJohn처럼 말했다. 전 세계적으로 설치하지 않고 실행하려면 응용 프로그램의 루트에서이 작업을 실행할 수 있습니다node_modules/.bin/jest args
에디 몽주 주니어

3
기본 자스민 설정을 사용하는 경우 fit대신을 사용하여 단일 테스트에 집중할 수 있습니다 it.
eremzeit

380

Magick 주문을 외면하기 만하면됩니다.

npm test -- SomeTestFileToRun

독립형 --은 옵션의 끝을 표시하는 * nix 매직이며,이 경우 이후의 모든 것이 실행중인 명령에 전달됨을 의미합니다 (NPM의 경우) jest. 옆으로 말함으로써 jest 사용법 메모를 표시 할 수 있습니다

npm test -- --help

어쨌든, 노래

npm test -- Foo

명명 된 파일 ( FooBar.js) 에서 테스트를 실행합니다 . 그러나 다음 사항에 유의해야합니다.

  • Jest는 이름을 대소 문자를 구분하므로 대소 문자를 구분하지만 대소 문자를 유지하는 파일 시스템 (예 : Windows NTFS)을 사용하는 경우 이상한 것으로 보이는 문제가 발생할 수 있습니다.

  • Jest는 사양을 접두사로 취급하는 것으로 보입니다.

위의 주문은

  • 실행 FooBar.js, Foo.jsFooZilla.js
  • 그러나 실행하지 마십시오 foo.js

고맙게도 불행히도 이것을 실행할 때 동일한 오류가 발생합니다.npm ERR! Error: ENOENT, open '<path to project>/node_modules/<name of file>/package.json'
Musket

1
커맨드 라인과 별도로 jest 테스트를 실행하는 다른 방법이 있습니까 ?? , 내가 기존 프로젝트 나머지 API에 게시 요청을하는 것처럼 CSRF 토큰 문제가 발생합니다. 기존 프로젝트에 jest 테스트를 어떻게 설정합니까? '그래서 사용 요청을 서비스 시작 것 대신'/ - API를 휴식 ' : / 8000-API 휴식을 로컬 호스트 '
Suyog Sawant

@ SuyogSawant : 그것은 의견이 아닙니다. 그것은 스스로 질문입니다. StackOverflow에서 여기에 요청해야합니다.
Nicholas Carey

1
내 경우에는 단순 하지 않은 npm test ToDoForm.test.js동안 일했다jest ToDoForm.test.js
Tomasz Mularczyk

대소 문자 구분에 대한 두 번째 요점은 위에서 제공 한 주문과 일치하지 않습니다.
NSjonas

38

개별 테스트를 실행하려면

npm test -t ValidationUtil # `ValidationUtil` its my module `ValidationUtil.spec.js`

-t- 테스트 이름을 포함 하는 정규식 을 넣은 후 .


1
대박! 잘 했어!
Flavio

21

사용 npm test농담 의미하지 않는다하는 것은 전 세계적으로 설치합니다. "test"가 패키지에서 jest를 사용하여 매핑되었음을 의미합니다.

다음은 프로젝트의 루트 수준에서 나를 위해 일한 것입니다.

node_modules/.bin/jest [args]

args는 실행하려는 테스트 파일이거나 여러 파일을 포함하는 디렉토리 일 수 있습니다.


나를 위해 일했다;)
wogsland

1
감사! 이것은 나에게 매우 유용했습니다!
Isaac

5
바이너리를 실행하는 바로 가기 node_modules/.binnpx명령 을 사용하는 것 입니다. 예를 들어npx jest [args]
Sergio Mazzoleni

16

당신이 사용하는 경우 다음 직후에 또는 파일을 yarn추가 할 수 있습니다.spec.js.test.js

yarn test src/lib/myfile.test.js

이것은 package.json로컬 패키지로 jest 설치와 관련하여 내 부분입니다 (관련 부분 제거).

{
...
  "scripts": {
    "test": "jest",
    "testw": "jest --watch",
    "testc": "jest --coverage",
...
  },
  "devDependencies": {
    "jest": "^18.1.0",
    ...
  },

}

11

파일 이름을 npm test --다음 과 함께 사용할 수 있습니다 .

npm test -- fileName.jsx 

1
그 대답이 될 것입니다!
Allan Stepps

이것은 문자 그대로 두 번째 답변입니다-@NicholasCarey
Jacksonkr

6

당신은 실행하면 npm >= 5.2.0당신은 농담 로컬로 설치 devDependenciesnpm i -d jest당신이 수행하여 특정 파일에 대한 농담을 실행할 수 있습니다npx jest /path/to/your/spec.js


5

우리가 사용하는 nrwl-NX를 함께 각도 . 이 경우 다음 명령을 사용할 수 있습니다.

npm test <ng-project> -- --testFile "file-name-part"

노트:

  • npm test에 지정된 테스트 스크립트를 실행합니다 package.json. "test:client": "ng test client"
  • 따라서 나머지 cmd는 ng test 로 전달됩니다.
    • <ng-project> 프로젝트의 이름입니다 angular.json
      • 이 매개 변수를 생략하면 "defaultProject"(에 지정됨 angular.json)이 사용됩니다 (따라서 테스트가 기본 프로젝트에없는 경우 지정해야합니다)
    • 다음으로 어떤 빌더가 사용되는지 확인해야합니다.
      • angular.json에 대한 탐색 "project"- "<ng-project>"- "architect"-"test"
      • 과를 확인 "builder"우리의 경우, 이는 :"@nrwl/jest:jest"
    • 이제 빌더를 알게되었으므로 사용 가능한 cmd-line 매개 변수를 찾아야합니다.
      • 명령 행에서 npm test server -- --help사용 가능한 모든 옵션을 보려면 실행 하십시오.
      • 또는 온라인 문서를 확인하십시오
    • 옵션 중 하나는 --testFile여기에서 사용됩니다

우리가 nx를 사용하고 있기 때문에 저를 위해 한 것입니다. 감사합니다.
user906573

4

이것은 테스트를 다시 시작하지 않고 특정 파일에서 테스트를 동적으로 실행하는 방법입니다. 내 반응 프로젝트는create-react-app

변경 사항을 테스트하고 변경하면 자동으로 테스트를 실행합니다.

이것이 터미널의 테스트 결과 끝에 표시되는 것입니다.

Test Suites: 16 passed, 16 total
Tests:       98 passed, 98 total
Snapshots:   0 total
Time:        5.048s
Ran all test suites.

Watch Usage: Press w to show more.

W를 누르십시오

Watch Usage
  Press f to run only failed tests.
  Press o to only run tests related to changed files.
  Press q to quit watch mode.
  Press p to filter by a filename regex pattern.
  Press t to filter by a test name regex pattern.
  Press Enter to trigger a test run.

그런 다음 P를 누르십시오

Pattern Mode Usage
  Press Esc to exit pattern mode.
  Press Enter to filter by a filenames regex pattern.

 pattern 

 Start typing to filter by a filename regex pattern.

이것은 '로그인'폴더에서 'index.es6.js'파일을 실행하고 싶을 때입니다.

Pattern Mode Usage
  Press Esc to exit pattern mode.
  Press Enter to filter by a filenames regex pattern.

 pattern  login/index

 Pattern matches 1 file
  src/containers/Login/index.es6.test.js

그것이 특정 파일에서 테스트를 실행하는 방법입니다.



1

방금 전 세계적으로 jest를 설치 한 다음 실행 jest myFileToTest.spec.js했으며 작동했습니다.


1

두 가지 옵션이 있습니다.

  • 옵션 1 : 명령 행. 다음 명령을 실행할 수 있습니다
node '/Users/complete-path-to-you-project/your-project/node_modules/.bin/jest' '/Users/complete-path-to-you-project/your-project/path-to-your-file-within-the-project/your-file.spec.ts'

이렇게하면 Jest를 전체적으로 설치할 수 없습니다. 프로젝트에서 사용하는 농담을 사용합니다.

  • 옵션 2 : VS 코드 를 사용 하는 경우 훌륭한 플러그인이 있습니다. Jest Runner . 파일별로 테스트를 실행할뿐만 아니라 실행하려는 테스트를 마우스 오른쪽 버튼으로 클릭하여 특정 제품군 및 사양까지 실행할 수 있습니다.

0

Jest 는 전달한 것을 정규식 패턴으로 사용 합니다. 일치합니다.

특정 테스트 파일을 실행하려는 경우 그런 다음 가장 좋은 방법은 전체 경로를 정확하게 작성하는 것입니다. ((src / XFolder / index.spec.ts)와 같은 특정 상대 경로를 너무 정확하게 지정할 수 있습니다).

디렉토리와 리눅스에서 전체 경로를 제공하는 가장 쉬운 방법은 다음과 같습니다.

jest $PWD/index.spec.ts

변수 $ PWD 의 사용에 유의하십시오 .

여기에 이미지 설명을 입력하십시오

창문! (업데이트 할)


0

Angular와 Jest를 사용하면 "scripts"아래 package.json에 추가 할 수 있습니다.

"test:debug": "node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand"

그런 다음 특정 파일에 대한 단위 테스트를 실행하려면 터미널 에이 명령을 쓸 수 있습니다

npm run test:debug modules/myModule/someTest.spec.ts

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