RSS DEV 커뮤니티
팔로우
NestJS에서 Jest를 사용하여 Prisma를 모의(Mock) 처리하기
NestJS 서비스가 PrismaService에 의존하는 경우, PrismaService를 모킹하는 것이 종종 필요합니다. 일반적인 패턴은 모킹된 PrismaService에 대한 특정 타입을 정의하는 것입니다. 이 모킹 타입은 테스트 중인 서비스가 실제로 사용하는 메서드만 포함해야 합니다. 예를 들어, 서비스가 `prisma.model.findMany`를 사용한다면, 모킹 타입은 `findMany`를 `jest.Mock`으로 정의합니다. 테스트의 `beforeEach` 블록에서 이 모킹 타입의 인스턴스를 생성하고, 해당 메서드를 `jest.fn()`으로 초기화합니다. 이 모킹 인스턴스는 `useValue`를 사용하여 NestJS 테스트 모듈에 제공됩니다. `Test.createTestingModule` 함수는 테스트 대상 서비스와 모킹된 의존성을 포함하여 테스트 환경을 설정하는 데 사용됩니다. 모듈이 생성된 후, 모킹된 PrismaService 인스턴스를 모듈에서 가져옵니다. 이 가져온 객체는 정의된 모킹 타입을 가지므로 타입 안전한 모킹 및 어설션을 수행할 수 있습니다. 그런 다음 Jest의 기능을 사용하여 `mockResolvedValue`를 통해 모킹된 메서드의 반환 값을 모킹할 수 있습니다. 또한 `expect`와 `toHaveBeenCalled`을 사용하여 이러한 모킹된 메서드가 예상대로 호출되었는지 어설션할 수 있습니다. 이 접근 방식은 PrismaService의 필요한 부분만 모킹하여 테스트를 집중적이고 예측 가능하게 유지합니다.