NestJS で Jest を使用して Prisma をモッ... ノート

NestJS で Jest を使用して Prisma をモックする

NestJSのサービスをテストする場合、PrismaServiceに依存するサービスをテストするときは、PrismaServiceをモックする必要があります。一般的なパターンは、モックのPrismaService用に特定の型を定義することです。このモック型には、テスト対象のサービスが実際に使用するメソッドのみを含める必要があります。たとえば、サービスが`prisma.model.findMany`を使用する場合、モック型は`findMany`を`jest.Mock`として定義します。テストの`beforeEach`ブロックで、このモック型のインスタンスを作成し、そのメソッドを`jest.fn()`で初期化します。このモックインスタンスは、`useValue`を使用してNestJSテストモジュールに提供されます。`Test.createTestingModule`関数を使用して、テスト環境を設定し、テスト対象のサービスとモック化された依存関係を含めます。モジュールが作成された後、モジュールからモック化されたPrismaServiceインスタンスを取得します。この取得されたオブジェクトには、定義されたモック型があり、型安全なモックとアサーションが可能になります。さらに、Jestの機能を使用して、モック化されたメソッドの戻り値を`mockResolvedValue`でモック化し、`expect`と`toHaveBeenCalled`を使用して、これらのモック化されたメソッドが予想どおりに呼び出されたことをアサートできます。このアプローチにより、PrismaServiceの必要な部分のみがモック化され、テストが集中して予測可能になります。