Сообщество 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, делая тесты сфокусированными и предсказуемыми.