DEV Community
Follow
Mock Prisma with Jest in NestJS
When testing a NestJS service that depends on PrismaService, mocking PrismaService is often necessary. A common pattern involves defining a specific type for the mock PrismaService. This mock type should only include the methods that the service under test actually utilizes. For instance, if the service uses `prisma.model.findMany`, the mock type would define `findMany` as a `jest.Mock`. In the `beforeEach` block of the test, you create an instance of this mock type, initializing its methods with `jest.fn()`. This mock instance is then provided to the NestJS test module using `useValue`. The `Test.createTestingModule` function is used to set up the test environment, including the service under test and the mocked dependency. After the module is created, you retrieve the mocked PrismaService instance from the module. This retrieved object will have the defined mock type, allowing for type-safe mocking and assertion. You can then use Jest's capabilities to mock the return values of the mocked methods using `mockResolvedValue`. Furthermore, you can assert that these mocked methods were called as expected using `expect` and `toHaveBeenCalled`. This approach ensures that only the necessary parts of PrismaService are mocked, making tests focused and predictable.