Mock Prisma avec Jest dans Nes... Note

Mock Prisma avec Jest dans NestJS

Lors du test d'un service NestJS qui dépend de PrismaService, il est souvent nécessaire de simuler PrismaService. Un modèle courant consiste à définir un type spécifique pour le PrismaService simulé. Ce type simulé ne doit inclure que les méthodes que le service en cours de test utilise réellement. Par exemple, si le service utilise `prisma.model.findMany`, le type simulé définirait `findMany` comme un `jest.Mock`. Dans le bloc `beforeEach` du test, vous créez une instance de ce type simulé, en initialisant ses méthodes avec `jest.fn()`. Cette instance simulée est ensuite fournie au module de test NestJS en utilisant `useValue`. La fonction `Test.createTestingModule` est utilisée pour configurer l'environnement de test, y compris le service en cours de test et la dépendance simulée. Après la création du module, vous récupérez l'instance simulée de PrismaService à partir du module. Cet objet récupéré aura le type simulé défini, ce qui permet une simulation et une assertion de type sûr. Vous pouvez ensuite utiliser les capacités de Jest pour simuler les valeurs de retour des méthodes simulées en utilisant `mockResolvedValue`. De plus, vous pouvez affirmer que ces méthodes simulées ont été appelées comme prévu en utilisant `expect` et `toHaveBeenCalled`. Cette approche garantit que seules les parties nécessaires de PrismaService sont simulées, ce qui rend les tests ciblés et prévisibles.