我对带有控制器和一些提供程序的模块进行了 e2e 测试:
beforeAll(async () => {
const moduleRef = await Test.createTestingModule({
controllers: [TestController],
providers: [
TestService,
{
provide: getRepositoryToken(TestEntity),
useValue: {
find: jest.fn(async () => testDatabaseResult),
save: jest.fn(),
},
},
],
}).compile();
app = moduleRef.createNestApplication();
app.use(cookieParser());
app.useGlobalPipes(new ValidationPipe());
await app.init();
});
我在这里通过模拟 TestEntity 存储库来模拟数据库连接,它工作正常 - 服务的实际实现得到模拟的数据库查询结果。但是在一个测试中,我需要 TestEntity 提供者使用具有不同实现的模拟查找功能:
find: jest.fn(async () => otherMockedTestDatabaseResult)
我怎样才能做到这一点?我想使用 TestService 的真正实现,它在后台使用被模拟的 TestEntity 存储库(我不想使用测试数据库)。提前感谢您的帮助。