[NestJS] Testing 경로 문제

jYur·2023년 5월 16일
0

nestjs 9.4.0, jest 29.5.0


옛날에 C/C++로 코딩할 때면 #include ...부터 열심히 타이핑하고 그랬다.
하지만 이제는 IntelliJ에서든, VS Code에서든 import ...를 손수 타이핑하는 거의 없다.
보통 아래의 1번이나 2번 방식으로 자동으로 import하니까.

결과

이런 식으로 여기저기 많은 import를 추가하게 되는데,
이때 NestJS의 기본 설정이 아래처럼 문제들을 발생시킨다.

Unit testing

End-to-end testing

모듈을 못 찾겠다고 한다.

절대 경로를 못 찾아가는 거라서 상대 경로로 바꿔 주면 되긴 된다.

아니 근데 잠깐,
단지 테스트 때문에 기존 코드의 모든 경로를 일일이 상대 경로로 바꾸고 또 새로 import할 때마다 경로를 상대 경로로 고쳐줘야 한다고?

그건 배보다 배꼽이 더 큰 격이 아닌가. 테스트 관련 설정만 좀 바꿔서 해결하자.

Unit testing
아래와 같이, package.json 파일의 "jest" 설정에 modulePaths 설정을 추가해 주자.

{
  (나머지 생략)
  "jest": {
    (나머지 생략)
    "rootDir": "src",
    "modulePaths": [
      "<rootDir>/.."
    ]
  }
}

( "rootDir": ".", "modulePaths": ["<rootDir>"]으로 해도 작동함 )

End-to-end testing
아래와 같이, jest-e2e.json 파일에 moduleNameMapper 설정을 추가해 주자.

{
  (나머지 생략)
  "rootDir": ".",
  "moduleNameMapper": {
    "^src/(.*)$": "<rootDir>/../src/$1"
  }
}

이제 경로 때문에 테스트가 실패하지는 않을 것이다.

0개의 댓글