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.
prisma.model.findMany, le type simulé définiraitfindManycomme unjest.Mock. Dans le blocbeforeEachdu test, vous créez une instance de ce type simulé, en initialisant ses méthodes avecjest.fn(). Cette instance simulée est ensuite fournie au module de test NestJS en utilisantuseValue. La fonctionTest.createTestingModuleest 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 utilisantmockResolvedValue. De plus, vous pouvez affirmer que ces méthodes simulées ont été appelées comme prévu en utilisantexpectettoHaveBeenCalled. Cette approche garantit que seules les parties nécessaires de PrismaService sont simulées, ce qui rend les tests ciblés et prévisibles.