Nestjs로 진행한 프로젝트에서 jest를 사용하여 unit test를 해보려고 했는데 오류가 발생했다.
현재 나의 코드는 testing module 생성만 해놓은 상황이었다.
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [BossRaidController],
providers: [
{
provide: BossRaidService,
useFactory: mockBossraidService,
},
],
}).compile();
controller = module.get<BossRaidController>(BossRaidController);
service = module.get<BossRaidService>(BossRaidService);
});
구글링을 해보니,, 내가 각 파일에서 다른 모듈을 import 할 때 vscode에서 자동으로 생성해주는 import를 그래로 냅뒀더니 절대경로인 src/로 import가 되어있었다!
알아보니 nest에서 기본적으로 설정되어있는 Jest의 module 찾는 방식은 상대경로이고, 절대 경로로 찾게 하려면 package.json file에서 moduleNameMapper 설정을 아래와 같이 해주면 된다고 한다.
{
// ...
"jest": {
// ...
"moduleNameMapper": {
"^src/(.*)$": "<rootDir>/$1"
}
}
}
아니면 vscode에서 import 하는 방식 자체를 상대경로로 하게끔 만들면 된다고 한다.
방법은
1. vscode 설정에서 Preferences: Import Module Specifier 검색
2. relativ로 변경
나는 vscode 설정을 변경하는 방식으로 진행하였다.
변경후 테스트 성공!