在
PUT
路由中,我有一个实用方法,我们可以在其中放置业务逻辑(因此,当我们需要完成路由所做的工作时,我们可以调用该方法而不是路由)。
我不明白如何伪造数据连接。
在路线上,我打电话
using (var unitOfWork = new UnitOfWork(IP, DbName, UserId, IdAzienda))
{
GroupEvents ret = UtilityOffPrenotazioni.UpdatePrenotazione(event, unitOfWork, group, eventId, userId, mapper, UserId, agencyId);
}
在函数内部我做了一些验证和其他事情,包括一些数据库操作,例如
Tblageeventi ev = new Tblageeventi();
ev = unitOfWork.TblageeventiRepo.Read(eventId, userId)
...
...
ev = unitOfWork.TblageeventiRepo.Update(ev);
eventRet = mapper.Map<Tblageeventi, EventiGruppo>(ev);
unitOfWork.TblageeventiRepo.Delete(new Tblageeventi()
{
UserId = userId,
EventId = eventId
});
在测试方法中,我有这样的东西
var retEvent = A.Fake<Tblageeventi_extended>();
var ev = A.Fake<Tblageeventi>();
using (var unitOfWork = A.Fake<UnitOfWork>((x => x.WithArgumentsForConstructor(() => new UnitOfWork(_ip, _dbName, _userId, _agencyId, "", 5432)))))
{
A.CallTo(() => unitOfWork.TblageeventiRepo.Read(eventId, userId)).Returns(retEvent);
A.CallTo(() => unitOfWork.TblageeventiRepo.Update(ageeventi, "")).Returns(ev);
// Act
UtilityOffPrenotazioni.UpdatePrenotazione(groupEvents, unitOfWork, groups, eventId, idUtente, _mapper, _userId, _agencyId);
}
错误提示
SxMultitenantDAL.Repos.TblageeventiRepository 类型的对象“SxMultitenantDAL.Repos.TblageeventiRepository”不被识别为假对象
我没有找到伪造的方法
TblageeventiRepo
(它的类型是TblageeventiRepository
)。
有关更多信息,请阅读
TblageeventiRepository
类中的签名 ->
public Tblageeventi_extended Read(int eventId, int userId).
有办法嘲笑这个吗?我现在开始研究测试主题,所以我不知道我写(组织)的方式是否正确。
谢谢你
你的错误表明你需要首先模拟 UnitOfWork 的属性
unitOfWork.TblageeventiRepo
返回存储库的假实现,然后才从存储库模拟方法