Simulando Prisma con Jest en N... Nota

Simulando Prisma con Jest en NestJS

Al probar un servicio NestJS que depende de PrismaService, a menudo es necesario simular PrismaService. Un patrón común implica definir un tipo específico para el PrismaService simulado. Este tipo simulado solo debe incluir los métodos que el servicio bajo prueba realmente utiliza. Por ejemplo, si el servicio utiliza `prisma.model.findMany`, el tipo simulado definiría `findMany` como un `jest.Mock`. En el bloque `beforeEach` de la prueba, se crea una instancia de este tipo simulado, inicializando sus métodos con `jest.fn()`. Esta instancia simulada se proporciona luego al módulo de prueba NestJS utilizando `useValue`. La función `Test.createTestingModule` se utiliza para configurar el entorno de prueba, incluyendo el servicio bajo prueba y la dependencia simulada. Después de que se crea el módulo, se recupera la instancia simulada de PrismaService del módulo. Este objeto recuperado tendrá el tipo simulado definido, lo que permite una simulación y aserción con seguridad de tipos. Luego, puede usar las capacidades de Jest para simular los valores de retorno de los métodos simulados usando `mockResolvedValue`. Además, puede asegurar que estos métodos simulados fueron llamados como se esperaba usando `expect` y `toHaveBeenCalled`. Este enfoque garantiza que solo se simulen las partes necesarias de PrismaService, haciendo que las pruebas sean enfocadas y predecibles.