IT

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

lottoking 2020. 4. 1. 08:12
반응형

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


파일 fix-order-test.js 내에 '네스트 된 자식과 함께 작동합니다'테스트가 있습니다.

아래를 실행하면 파일의 모든 테스트가 실행됩니다.

jest fix-order-test

단일 테스트 만 실행하려면 어떻게합니까? 아래는 지정된 정규식 파일을 검색 할 때 작동하지 않습니다.

jest 'works with nested children'

명령 행에서 --testNamePattern또는 -t플래그를 사용하십시오.

jest -t 'fix-order-test'

제공 한 테스트 이름 패턴과 일치하는 테스트 만 실행합니다. 그것은에서의 농담 문서 .

다른 방법은 감시 모드에서 테스트를 실행 jest --watch한 다음을 눌러 p테스트 파일 이름을 입력하여 테스트를 필터링하거나 t단일 테스트 이름을 실행하는 것입니다.


Jest 문서 는 다음을 권장합니다.

테스트에 실패한 경우 가장 먼저 확인해야 할 사항 중 하나는 테스트가 유일한 테스트 일 때 테스트에 실패했는지 여부입니다. Jest에서는 테스트를 하나만 실행하는 것이 간단합니다. 일시적으로 해당 test명령을test.only

test.only('this will be the only test that runs', () => {
   expect(true).toBe(false);
});

다른 답변에서 언급했듯이 test.only동일한 파일에서 다른 테스트를 필터링하면됩니다 . 따라서 다른 파일의 테스트는 계속 실행됩니다.

따라서 단일 테스트를 실행하려면 두 가지 접근 방식이 있습니다.

  • 옵션 1 : 테스트 이름이 고유 한 경우 t시계 모드에서 입력하고 실행할 테스트 이름을 입력 할 수 있습니다.

  • 옵션 2 :

    1. 히트 p시계 모드에서 사용자가 실행하고자하는 파일 이름에 대한 정규식을 입력 할 수있다. (시계 모드에서 Jest를 실행하면 이와 같은 관련 명령이 표시됩니다).
    2. 변경 itit.only당신이 실행하고자하는 테스트합니다.

위의 방법 중 하나를 사용하면 Jest는 지정한 파일에서만 단일 테스트를 실행합니다.


단일 Jest 테스트를 실행하기위한 전체 명령

명령:

node <path-to-jest> -i <you-test-file> -c <jest-config> -t "<test-block-name>"

  • <path-to-jest>:
    • 윈도우 : node_modules\jest\bin\jest.js
    • 기타 : node_modules/.bin/jest
  • -i <you-test-file>: 테스트가있는 파일의 경로 ( js또는 ts)
  • -c <jest-config>: 별도의 Jest 구성 파일 (JSON) 경로, Jest 구성을 유지 package.json하는 경우이 매개 변수를 지정할 필요가 없습니다 (Jest는 사용자의 도움없이 찾을 수 있음)
  • -t <the-name-of-test-block>: 실제로는의 이름 (제 파라미터)이다 describe(...), it(...)또는 test(...)블록.

예:

describe("math tests", () => {

  it("1 + 1 = 2", () => {
    expect(1 + 1).toBe(2);
  });

  it("-1 * -1 !== -1", () => {
    expect(-1 * -1).not.toBe(-1);
  });

});

따라서 명령

node node_modules/jest/bin/jest.js -i test/math-tests.js -c test/tests-config.json -t "1 + 1 = 2"

테스트 it("1 + 1 = 2", ...)하지만 -t매개 변수를 "math tests"변경 하면 describe("math tests",...)블록 에서 두 테스트를 모두 실행합니다 .

비고 :

  1. Windows의 교체 node_modules/.bin/jest와 함께 node_modules\jest\bin\jest.js.
  2. 이 방법을 사용하면 실행중인 스크립트를 디버깅 할 수 있습니다. 디버깅 을 활성화하려면 '--inspect-brk'명령 매개 변수를 추가하십시오 .

'package.json'에서 NPM 스크립트를 통해 단일 Jest 테스트 실행

Jest를 설치하면 NPM 스크립트 를 사용하여 위 명령의 구문을 단순화 할 수 있습니다 . 에서 것은 "package.json"받는 새로운 스크립트를 추가 "scripts"섹션 :

"scripts": {
  "test:math": "jest -i test/my-tests.js -t \"math tests\"",
}

이 경우 'jest'전체 경로를 작성하는 대신 별칭을 사용합니다. 또한 구성 파일 경로도 지정할 수 없으므로 "package.json"Jest는 기본적으로 경로를 확인합니다. 이제 다음 명령을 실행할 수 있습니다.

npm run test:math

상기 "math tests"두 실험과 블록이 실행된다. 또는 하나의 특정 테스트를 이름으로 지정할 수도 있습니다.

또 다른 옵션은 스크립트 <the-name-of-test-block>외부에서 매개 변수 를 가져 "test:math"와서 NPM 명령에서 전달하는 것입니다.

package.json :

"scripts": {
  "test:math": "jest -i test/my-tests.js -t",
}

명령:

npm run test:math "math tests"

이제 훨씬 짧은 명령으로 테스트 실행 이름을 관리 할 수 ​​있습니다.

비고 :

  1. 'jest'명령은 NPM 스크립트와 함께 작동하므로

    npm라이프 사이클 스크립트를 실행할 때 환경 변수 "./node_modules/.bin"의 첫 번째 항목을 PATH작성하므로 프로그램이 전체적으로 설치되지 않은 경우에도 정상적으로 작동합니다 ( NPM 블로그 )

  2. 이 방법은 농담이를 통해 실행되기 때문에 디버깅을 허용하지 않는 것 진 / CLI 하지 통해 node.

Visual Studio Code에서 선택된 Jest 테스트 실행

Visual Studio Code를 사용하는 경우이를 사용하여 F5버튼 을 눌러 현재 선택된 테스트 (코드 편집기에서)를 실행할 수 있습니다 . 이를 위해 파일 새로운 시작 구성 블록 을 만들어야 ".vscode/launch.json"합니다. 이 구성에서는 실행시 적절한 (불행히도 항상 그런 것은 아님 ) 값 으로 대체되는 사전 정의 된 변수사용 합니다. 사용 가능한 모든 것 중에서 우리는 다음에 만 관심이 있습니다.

  • ${relativeFile} -현재 열린 파일 ${workspaceFolder}
  • ${selectedText} -활성 파일에서 현재 선택된 텍스트

그러나 launch config를 작성하기 전에 'test'스크립트를 추가해야합니다 'package.json'(아직없는 경우).

package.json :

"scripts": {
  "test": "jest"
}

시작 설정에서 사용할 수 있습니다.

구성 시작 :

{
  "type": "node",
  "request": "launch",
  "name": "Run selected Jest test",
  "runtimeExecutable": "npm",
  "runtimeArgs": [
    "run-script",
    "test"
  ],
  "args": [
    "--",
    "-i",
    "${relativeFile}",
    "-t",
    "${selectedText}"
  ],
  "console": "integratedTerminal",
}

실제로이 답변의 앞에서 설명한 명령과 동일합니다. 모든 것이 준비되었으므로 명령 매개 변수를 수동으로 다시 작성하지 않고도 원하는 테스트를 실행할 수 있습니다.

여기 당신이해야 할 모든 것이 있습니다 :

  1. 디버그 패널에서 현재 작성된 실행 구성을 선택하십시오.

VSCode 디버그 패널에서 launch config를 선택하십시오.

  1. 코드 편집기에서 테스트와 함께 파일을 열고 테스트하려는 테스트 이름을 따옴표없이 선택하십시오.

시험 명 선택

  1. 보도 'F5'버튼을 누릅니다.

그리고 짜잔!

이제 편집기에서 테스트를 열려면 이름을 선택하고 F5를 누르십시오.

불행히도 Windows 시스템에서는 슬래시가 반전 된${relativeFile} 경로로 변수를 대체하고 (왜 그런지 아는가) Jest는 그러한 경로를 이해하지 못하기 때문에 Windows 시스템에서는 "voila" 가 아닙니다.

비고 :

  1. 디버거에서 실행하려면 '--inspect-brk'매개 변수 를 추가하는 것을 잊지 마십시오 .
  2. 이 구성 예에서는에 포함되어 있다고 가정하는 Jest 구성 매개 변수가 없습니다 'package.json'.

당신은 또한 사용할 수 있습니다 f또는 x초점 또는 시험을 제외 할 수 있습니다. 예를 들어

fit('only this test will run', () => {
   expect(true).toBe(false);
});

it('this test will not run', () => {
   expect(true).toBe(false);
});

xit('this test will be ignored', () => {
   expect(true).toBe(false);
});

위에서 말했듯이 명령을 실행할 수 있습니다

jest -t 'fix-order-test'

당신은 블록 it내부 가 있다면 describe, 당신은 실행해야합니다

jest -t '<describeString> <itString>'

최신 농담 버전 , 당신은 테스트 스위트에 대한 동일한에서만 실행 한 테스트로 다음 중 하나를 사용할 수 있습니다.

it.only('test 1', () => {})

test.only('test 1', () => {})

fit('test 1', () => {})

jest 'test 1' 테스트 이름이 고유 한 경우에도 작동 할 수 있습니다.


jest과 같은 스크립트 명령으로 실행 한 경우 npm test다음 명령을 사용하여 작동시켜야합니다.

npm test -- -t "fix order test"

VS 코드에서는 중단 점을 사용하여 1 개의 Jest 테스트 만 실행 / 디버그 할 수 있습니다. https://github.com/Microsoft/vscode-recipes/tree/master/debugging-jest-tests

launch.json안에 이것을 가지고 있습니다 :

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Jest All",
      "program": "${workspaceFolder}/node_modules/.bin/jest",
      "args": ["--runInBand"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "windows": {
        "program": "${workspaceFolder}/node_modules/jest/bin/jest",
      }
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Jest Current File",
      "program": "${workspaceFolder}/node_modules/.bin/jest",
      "args": ["${relativeFile}"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "windows": {
        "program": "${workspaceFolder}/node_modules/jest/bin/jest",
      }
    }
  ]
}

그리고 이것은 package.json:

  "scripts": {
    "test": "jest"
  }
  • 1 개의 테스트를 실행하려면 해당 테스트에서 test(또는 it)를 test.only(또는 it.only)로 변경하십시오. 1 개의 테스트 스위트 (여러 테스트)를 실행하려면로 변경 describe하십시오 describe.only.
  • 원하는 경우 중단 점을 설정하십시오.
  • VS Code에서 디버그보기 (Shift + Cmd + D)로 이동하십시오.
  • 상단의 드롭 다운 메뉴에서을 선택하십시오 Jest Current File.
  • 테스트를 실행하려면 녹색 화살표를 클릭하십시오.

여기 내 테이크가 있습니다 :

./node_modules/.bin/jest --config test/jest-unit-config.json --runInBand src/components/OpenForm/OpenForm.spec.js -t 'show expanded'

노트:

  • ./node_modules/.bin/...로컬로 설치된 패키지와 함께 제공된 로컬로 설치된 jest (또는 mocha 또는 ...) 바이너리에 액세스하는 훌륭한 방법입니다. (예, npm 스크립트 jest에서는 이전에 아무것도 할 수 없지만 이것은 명령 줄에서 편리합니다 ... (또한 디버깅 구성, 어느 IDE를 사용하든 좋은 시작입니다 ...)
  • 프로젝트에 구성 옵션 세트가 없을 수 있습니다. 그러나 (에서 스크립트를 들여다 본다면 package.json) 이것이 필요한 것입니다.
  • --runInBand 말했듯이 구성에 대해서는 알지 못하지만 단일 테스트 개발 / 수정에 집중하면 웹 작업자를 다루고 싶지 않습니다 ...
  • 예, 파일에 대한 전체적이고 명확한 경로를 제공 할 수 있습니다
  • 선택적-t 으로 해당 파일의 모든 테스트를 실행하지 않고 단일 테스트 (여기서는 show expanded이름에 ' ' 가있는 테스트) 만 실행할 수 있습니다 . .only()해당 파일 을 붙이면 동일한 효과를 얻을 수 있습니다 .

단지 약간의 추가 기능입니다. 사용하기 위해 싸우 ./node_modules/.bin/jest -i ...거나 일종 jest -i ...또는npm test -- -i ...

  1. jestnpm install -g jest와 같이 전 세계에 설치되어 있으면 종속성을 처리하는 깔끔하지 않은 방법으로 호출 하면됩니다.
  2. npx jest -i ...jest가 패키지에 로컬로만 설치되어 있고 npm 스크립트 우회없이 jest 스크립트를 호출하려는 경우 =>를 사용할 수 있습니다. 이것은 정확히 npx의 용도입니다. 글쓰기에서 당신을 저장./node_modules/.bin/...

이제 이것을위한 멋진 jest 플러그인있는데이jest-watch-typeahead 프로세스를 훨씬 간단하게 만듭니다.

참고 URL : https://stackoverflow.com/questions/42827054/how-do-i-run-a-single-test-using-jest

반응형