Beim Testen eines NestJS-Dienstes, der von PrismaService abhängt, ist das Mocken von PrismaService oft notwendig. Ein gängiges Muster beinhaltet die Definition eines spezifischen Typs für das Mock PrismaService. Dieser Mock-Typ sollte nur die Methoden enthalten, die der zu testende Dienst tatsächlich nutzt. Wenn der Dienst beispielsweise prisma.model.findMany verwendet, würde der Mock-Typ findMany als jest.Mock definieren. Im beforeEach-Block des Tests erstellen Sie eine Instanz dieses Mock-Typs und initialisieren dessen Methoden mit jest.fn(). Diese Mock-Instanz wird dann dem NestJS-Testmodul mit useValue bereitgestellt. Die Funktion Test.createTestingModule wird verwendet, um die Testumgebung einzurichten, einschließlich des zu testenden Dienstes und der gemockten Abhängigkeit. Nach der Erstellung des Moduls rufen Sie die gemockte PrismaService-Instanz aus dem Modul ab. Dieses abgerufene Objekt hat den definierten Mock-Typ, was typsicheres Mocking und Assertions ermöglicht. Sie können dann die Möglichkeiten von Jest nutzen, um die Rückgabewerte der gemockten Methoden mit mockResolvedValue zu mocken. Darüber hinaus können Sie mit expect und toHaveBeenCalled sicherstellen, dass diese gemockten Methoden wie erwartet aufgerufen wurden. Dieser Ansatz stellt sicher, dass nur die notwendigen Teile von PrismaService gemockt werden, wodurch Tests fokussiert und vorhersagbar werden.
prisma.model.findManyverwendet, würde der Mock-TypfindManyalsjest.Mockdefinieren. ImbeforeEach-Block des Tests erstellen Sie eine Instanz dieses Mock-Typs und initialisieren dessen Methoden mitjest.fn(). Diese Mock-Instanz wird dann dem NestJS-Testmodul mituseValuebereitgestellt. Die FunktionTest.createTestingModulewird verwendet, um die Testumgebung einzurichten, einschließlich des zu testenden Dienstes und der gemockten Abhängigkeit. Nach der Erstellung des Moduls rufen Sie die gemockte PrismaService-Instanz aus dem Modul ab. Dieses abgerufene Objekt hat den definierten Mock-Typ, was typsicheres Mocking und Assertions ermöglicht. Sie können dann die Möglichkeiten von Jest nutzen, um die Rückgabewerte der gemockten Methoden mitmockResolvedValuezu mocken. Darüber hinaus können Sie mitexpectundtoHaveBeenCalledsicherstellen, dass diese gemockten Methoden wie erwartet aufgerufen wurden. Dieser Ansatz stellt sicher, dass nur die notwendigen Teile von PrismaService gemockt werden, wodurch Tests fokussiert und vorhersagbar werden.