很难解释我正在寻找的内容,但我的例子应该可以澄清它。
我有下一个代码:
var schedule = ScheduleUtil.CreateScheduleDto(user, user);
Expect.Call(() => _scheduleRepository.Save(schedule));
现在,我想做的是,当进行 Save 调用时,schedule.id 属性应设置为另一个值(例如 1)。
我不想嘲笑时间表。这可以做到吗? Save 方法不返回值,因此不可能,但我确实希望修改对象计划。
更新:也许一个小例子可以澄清我到底想要什么。
假设有一个带有 Save 方法的类:
公共无效创建(实体实体)
{
//实体保存到数据库
//entity.id 使用数据库中创建的 id 进行更新
}
因此,在创建之前,entity.id 是 -1,创建之后它是 > 0。
现在,有一个服务使用此 Create。该服务方法的代码契约规定,在调用之前,实体的 id 必须等于 -1,在调用之后,实体的 id 必须 > 0(前置条件和后置条件)。
所以,我需要的是这样的:
var 实体 = 新实体(); //id == -1
Expect.Call(() => _instance.Create(实体);
//现在entity.id应该是一个大于0的随机数。这就是我需要的,让Rhino Mocks将实体的id更新为给定的整数。这可能吗?
不,如果你不是在嘲笑_scheduleRepository
,Rhino Mocks 并不知道这件事。你为什么不想嘲笑_scheduleRepository
?
EDIT:好的,现在我知道你想做什么了。使用“WhenCalled”扩展方法来定义当Rhino.Mocks拦截调用时要执行的代码。像这样的东西应该有效:
_scheduleRepository.Expect(s => s.Save(schedule)).WhenCalled(a => ((Schedule) a.Arguments[0]).Id = 1);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)