我有以下代码从我的 NestJS 服务中模拟实体管理器,它在某种程度上有效,但问题在于指定什么findOne
应该返回不同的实体。
{
provide: getEntityManagerToken(),
useFactory: (connection: Connection) => {
const entityManager = {
getRepository: jest.fn(() => {
return {
findOne: jest.fn().mockResolvedValue({}),
save: jest.fn().mockResolvedValue(carData),
createQueryBuilder: jest.fn(() => ({
select: jest.fn().mockReturnThis(),
from: jest.fn().mockReturnThis(),
leftJoinAndSelect: jest.fn().mockReturnThis(),
where: jest.fn().mockReturnThis(),
addGroupBy: jest.fn().mockReturnThis(),
groupBy: jest.fn().mockReturnThis(),
getOne: jest.fn().mockResolvedValue(''),
})),
};
}),
};
return entityManager;
},
},
我的服务如下代码所示:
export class CarService {
constructor(
@InjectEntityManager()
private readonly entityManager: EntityManager,
) {
this.carRepository = entityManager.getRepository(Car);
this.modelRepository = entityManager.getRepository(Model);
}
const car = await this.carRepository.findOne(data.id);
const model = await this.modelRepository.findOne(data.modelId);
我如何模拟 findOne 结果this.carRepository
与 findOne 结果不同this.modelRepository
考虑到它们都将在同一个服务中被调用。