inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

test 관련 질문드립니다!

258

komment

작성한 질문수 4

0

안녕하세요 제로초님! test관련 질문이 있어서 질문글 남깁니다 :)

아래와 같이 따로 Repository provider를 만들고

export const userProviders = [
  {
    provide: USER_REPOSITORY,
    useFactory: (dataSource: DataSource) => dataSource.getRepository(User),
    inject: [APP_DATABASE],
  },
];

 

Service에서 아래와 같이 @InjectRepository가 아니라 @Inject로 생성자를 구성했습니다. (USER_REPOSITORY는 따로 constants.ts파일을 만들어두었습니다.

@Injectable()
export class UserService {
  constructor(
    @Inject(USER_REPOSITORY)
    private userRepository: Repository<User>,
  ) {}
. . .

 

이후 Service 파일의 테스트 코드를 작성하는데 모킹이 안돼서 질문을 남기게 되었습니다.

. . . 
     providers: [
        UserService,
        {
          provide: getRepositoryToken(User),
          useValue: mockUserRepository,
        },
      ],
. . .

위와 같이 모킹했는데, 아래와 같은 오류가 떴습니다. ㅜㅜ

Nest can't resolve dependencies of the UserService (?). Please make sure that the argument USER_REPOSITORY at index [0] is available in the RootTestModule context.

    Potential solutions:
    - If USER_REPOSITORY is a provider, is it part of the current RootTestModule?
    - If USER_REPOSITORY is exported from a separate @Module, is that module imported within RootTestModule?
      @Module({
        imports: [ /* the Module containing USER_REPOSITORY */ ]
      })

      at TestingInjector.lookupComponentInParentModules (../node_modules/@nestjs/core/injector/injector.js:231:19)
      at TestingInjector.resolveComponentInstance (../node_modules/@nestjs/core/injector/injector.js:184:33)
      at TestingInjector.resolveComponentInstance (../node_modules/@nestjs/testing/testing-injector.js:16:45)
      at resolveParam (../node_modules/@nestjs/core/injector/injector.js:106:38)
          at async Promise.all (index 0)
      at TestingInjector.resolveConstructorParams (../node_modules/@nestjs/core/injector/injector.js:121:27)
      at TestingInjector.loadInstance (../node_modules/@nestjs/core/injector/injector.js:52:9)
      at TestingInjector.loadProvider (../node_modules/@nestjs/core/injector/injector.js:74:9)
          at async Promise.all (index 3)

 

 

express nodejs NestJS TypeORM

답변 1

0

제로초(조현영)

저 방식은 완전 원초적인 DB 주입 방식입니다. 기존 제 방식을 쓰시는 것을 추천드리고요. getRepositoryToken도 제 방식에서만 돌아갑니다.

provide: USER_REPOSITORY 하면 되지 않을까싶긴 합니다. 이 값이 @Inject랑 일치해야 하거든요.

강의자료는 어디서 다운받나요?

0

145

4

질문 있습니다.

0

320

3

코드 편집기 확장 프로그램

0

220

2

(질문)비밀 저장소에 접근하기 위한 인증 정보는 로컬 .env에 저장하는지?

0

165

2

(질문)외부 저장소를 통한 환경변수 불러오기 비동기 질문

0

179

3

로그인을 해도 LoggedInGuard쪽에서 false값이 나옵니다.

0

163

2

로그인방법이 고민됩니다.

0

197

2

yarn seed 명령어 실행 시 데이터 삽입 안됨

0

305

4

yarn run db:create 시에 발생하는 데코레이터 오류

0

249

2

npm run db:create 시에 발생하는 decorating 오류

0

245

2

RxJS 디버깅 질문 있습니다.

0

201

3

CacheManager에 대해 질문 있습니다.

0

185

2

로깅은 어떻게 하는게 효율적일까요?

0

240

1

CORS 질문 있습니다.

0

428

2

쿠키 옵션에 대해서 질문 있습니다.

0

190

2

로그아웃 요청이 403 forbidden 에러가 나는데 왜그런걸까요??

0

458

1

401 unauthorized문제

0

306

1

가드의 장점에 대해서 질문이 있습니다.

0

234

1

로그 관리에 대해 질문 있습니다.

0

256

2

CORS 에러 질문 있습니다.

0

329

2

배포 환경 DB 연결 질문 있습니다.

0

418

2

socket io 미 연결 문제 (nest & flutter)

1

1169

3

no elements in sequence 에러 관해서 질문이 있습니다.

0

466

1

start:dev-backup으로 돌리면 핫 리로딩이 되요 정상인가요?

0

327

1