본문 바로가기
Testing/Jest

[Jest] 감시모드(watch/watchAll) - 변경된 파일이 있는 경우 테스트 자동 실행하기

by 썸머워즈 2022. 9. 27.
반응형

Jest에는 다양한 옵션이 존재하는데, 정확한 명칭은 Jest CLI 옵션이라고 한다.

다양한 옵션 중에 감시 모드 옵션인 watch/watchAll에 대해 알아보고자 한다.

 

Jest CLI 옵션 사용 방법

watch/watchAll 옵션에 대해 알아보기 전에 우선 Jest CLI 옵션을 사용할 줄 알아야 하니 사용방법에 대해 간단하게 알고 넘어가자.

 

npm 스크립트와 함께 사용

npm test 명령어와 같이 사용하게 되면 npm test와 Jest 인수 사이에 --를 삽입하여 명령 줄 인수를 계속 사용할 수 있다.

npm test -- -h
npm test -- --watchAll

실제로 -h 헬프 옵션을 사용해보면 다양한 옵션들이 출력되는 것을 볼 수 있는데, 그중에 --watch와 --watchAll을 볼 수 있다.

 

* 좀 더 자세한 내용은 공식 문서를 확인해보도록 하자.

package.json에서 설정

이 방법은 그냥 package.json에 test 스크립트 옵션을 주는방법인데 이 옵션이 고정되어버리는 단점은 있으나 매번 입력할 필요가 없어 편하다는 장점이 있다.

{
  "name": "unit-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "jest --watchAll"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@types/jest": "^29.0.3",
    "jest": "^29.0.3"
  }
}

 

scripts 프로퍼티에 jest옵션을 주면 해당 옵션상태로 계속 실행된다.

Watch / WatchAll 옵션

 

jest --watch #runs jest -o by default
jest --watchAll #runs all tests

감시 모드를 사용하면 특정 테스트 세트에 중점을 둘 파일의 이름 또는 경로를 지정할 수 있다.

--watch

파일이 변경되었는지 확인하고 변경된 파일과 관련된 테스트를 다시 실행하는 옵션이다.

여기서 중요한 점은 "변경된 파일과 관련된 테스트"만 실행한다는 점이다.

 

이 변경된 파일이라는 것을 어떻게 판별하냐면, 위에서 설명한것 처럼 --watch 옵션은 jest -o로 테스트를 실행하게 되는데, 여기서 -o는 hg나 git에서 변경된 파일만 실행하는 옵션이다.

 

그래서 git을 사용할 경우 일반적으로 commit된 상태이면서 변경되지 않은 파일의 경우 실행이 안되며, 만약 변경된 파일과 관련이 있다고 판별이 날 경우 그 테스트만 자동 실행된다.

 

--watchAll

변경 사항이 있는지 파일을 관찰하고 변경 사항이 있을 때 모든 테스트를 다시 실행하는 옵션이다.

계속 전체적인 테스트를 실행하는 점에서 --watch와 반대이다.

 

프로젝트 규모가 작을때는 상관없겠지만, 만약 프로젝트 규모가 커지게 된다면 --watch 옵션을 주로 사용한다.


참고: https://runebook.dev/ko/docs/jest/cli

 

Jest CLI 옵션 - jest 명령줄 실행기에는 여러 가지 유용한 옵션이 있습니다.

 

runebook.dev

참고: https://jestjs.io/docs/cli

 

Jest CLI Options · Jest

The jest command line runner has a number of useful options. You can run jest --help to view all available options. Many of the options shown below can also be used together to run tests exactly the way you want. Every one of Jest's Configuration options c

jestjs.io

반응형


댓글

TOP