NestJS에서 Jest를 사용하여 Prisma를 모의... 노트

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의 필요한 부분만 모킹하여 테스트를 집중적이고 예측 가능하게 유지합니다.