Мок Prisma с Jest в NestJS Заметка
Сообщество RSS DEV

Мок Prisma с Jest в NestJS

При тестировании сервиса NestJS, который зависит от PrismaService, часто требуется его мокирование. Распространенный подход включает определение специального типа для мокированного PrismaService. Этот мок-тип должен содержать только те методы, которые фактически используются тестируемым сервисом. Например, если сервис использует prisma.model.findMany, мок-тип будет определять findMany как jest.Mock. В блоке beforeEach теста создается экземпляр этого мок-типа, инициализируя его методы с помощью jest.fn(). Этот мок-экземпляр затем предоставляется тестовому модулю NestJS с помощью useValue. Функция Test.createTestingModule используется для настройки тестовой среды, включая тестируемый сервис и мокированную зависимость. После создания модуля извлекается экземпляр мокированного PrismaService. Этот извлеченный объект будет иметь определенный мок-тип, обеспечивая типобезопасное мокирование и утверждение. Затем можно использовать возможности Jest для мокирования возвращаемых значений мокированных методов с помощью mockResolvedValue. Кроме того, можно утверждать, что эти мокированные методы были вызваны как ожидалось, используя expect и toHaveBeenCalled. Такой подход гарантирует, что мокируются только необходимые части PrismaService, делая тесты сфокусированными и предсказуемыми.