해결된 질문
작성
·
230
0
질문보다는 코드 리뷰에 가까운데
강의 내용중에 나온 테스트 코드와 실제 배포시 다르게 적용할 경우 예제를 작성해 보았습니다.
이해한 내용이 맞는지 또는 보안이나 수정할 만한 내용이 있는지 알려주시면 감사합니다.
//app.service.ts
import { Injectable } from '@nestjs/common';
export interface IAppService {
getSecret(): string;
}
@Injectable()
export class AppService implements IAppService {
getSecret(): string {
return '실제 배포 환경';
}
}
@Injectable()
export class Test_AppService implements IAppService {
getSecret(): string {
return '개발 테스트 환경';
}
}
//app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService, Test_AppService } from './app.service';
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [ConfigModule.forRoot({ isGlobal: true })],
controllers: [AppController],
providers: [
{
provide: 'AppService',
useClass:
process.env.NODE_ENV === 'production' ? AppService : Test_AppService,
},
],
})
export class AppModule {}
//app.controller.ts
import { Controller, Get, Inject } from '@nestjs/common';
import { IAppService } from './app.service';
@Controller()
export class AppController {
constructor(@Inject('AppService') private readonly appService: IAppService) {}
@Get()
getHello(): string {
return this.appService.getSecret();
}
}
답변 1
1
그렇게 하시면 됩니다.
하나 보완할 만한 것은 process.env.NODE_ENV도 configService를 inject하는 식으로 수정해서 configService.get('NODE_ENV')로 바꾸면 좋을 것 같습니다.