반응형
인수인계 받은 코드에는 테스트 코드가 없습니다.….
그래서 수정한 기능 혹은 새로 생성한 기능에 대한 테스트코드를 작성하려고 했는데…
에러가 발생했습니다... :(
엔티티 에서 import 한 ApiColumn 을 찾을 수 없다는 에러 내용인데, 현재 라이브러리를 사용하지 않고 단순히 common 디렉토리 아래 코드를 생성후 가져다 사용하기 때문에 테스트 코드에서는 찾을 수 없다고 하는 것 같습니다..
이를 해결하기 위해 기존 common 아래 있던 기능들을 별도의 라이브러로 구성해 에러를 해결해보려고 합니다..
common 라이브러리 생성
npx nest g library common
라이브러리 생성 후 src/c_common/decorator/api-column.decorator.ts를 lib/common/decorator로 이동
- 수정 전 구조
/src
/c_common
/decorators
- api-column.decorator.ts
- 수정 후 구조
/lib
/common
/src
/decorators
- api-column.decorator.ts
- index.ts
- common.moudle.ts
- index.ts
라이브러리쪽 코드를 좀 더 자세히 살펴보면
//common.module.ts
import { Module } from '@nestjs/common';
@Module({
providers: [],
exports: [],
})
export class CommonModule {}
// 최 상단의 index.ts
export * from './common.module';
export * from './decorators'
// decorators 안의 index.ts
export * from './api-column.decorator';
엔티티에 import 되어있던 라이브러리에서 decorator에서 import 되도록 수정
- 수정 전
import { ApiColumn } from '../../../../c_common/decorators/api-column.decorator';
@Entity({ comment: '기사' })
export class Article extends Default {
//엔티티 컬럽들
}
- 수정 후
import { ApiColumn } from "@app/common";
export class Article extends Default {
//엔티티 컬럽들
}
app module 에 Common module 추가
//app.module.ts
import {CommonModule} from "@app/common";
@Module({
imports: [
...Modules
CommonModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule implements NestModule {
...
}
이후 테스트를 진행해보니 아래와 같이 매칭되는 테스트를 찾지 못함.
Jest에서 보고있는 디렉토리가 잘못된것으로 보여, Jest config 를 확인 후 수정
- 수정 전
{
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": ".",
"testRegex": ".*\\\\.spec\\\\.ts$",
"transform": {
"^.+\\\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "./coverage",
"testEnvironment": "node",
"roots": [
"<rootDir>/src/",
"<rootDir>/libs/"
],
"moduleNameMapper": {
"^@app/common(|/.*)$": "<rootDir>/libs/common/src/$1"
}
}
- 수정 후
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": ".",
"testRegex": ".*\\\\.spec\\\\.ts$",
"transform": {
"^.+\\\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
"**/*.(t|j)s",
"**/*.{js,jsx}",
"!**/node_modules/**",
"!**/vendor/**"
],
"coverageDirectory": "./coverage",
"testEnvironment": "node",
"roots": [
"<rootDir>/test/", // src -> test 로 변경
"<rootDir>/libs/"
],
"moduleNameMapper": {
"^@app/common(|/.*)$": "<rootDir>/libs/common/src/$1"
}
}
이 후 다시 테스트를 진행해보면,
반응형
'Node.js' 카테고리의 다른 글
[Error] Cannot install on Intel processor in ARM default prefix (/opt/homebrew)! (0) | 2024.08.26 |
---|---|
NestJS Boilerplate (0) | 2024.03.26 |
Node-cache 를 통한 API Response 개선 (feat. Events) (1) (0) | 2024.02.22 |