在Expect.Call中设置对象的属性

问题描述:

这很难解释我在寻找什么,但我的示例应该澄清它。在Expect.Call中设置对象的属性

我有下面的代码:

var schedule = ScheduleUtil.CreateScheduleDto(user, user); 
Expect.Call(() => _scheduleRepository.Save(schedule)); 

现在,我想做的是当这个保存调用时,该schedule.id属性应设置为另一个值(1例)。

我不想模拟时间表。这可以做到吗? Save方法不返回值,所以这不是一种可能性,但我确实希望修改对象计划。

更新:也许一个小例子将阐明我确切想要什么。

说有一个方法保存类:

公共无效创建(实体实体) {// 实体保存到数据库 //entity.id与创建ID在数据库中更新 }

因此,在创建之前,entity.id是-1,后创建> 0

现在,有一个使用此创建服务。这个服务方法上的代码契约表明,在它被调用之前,实体必须有一个等于-1的id,它在被调用后必须有一个id> 0(前置条件和后置条件)。

所以,我需要的是这样的: var entity = new Entity(); // id == -1 Expect.Call(()=> _instance.Create(entity);
//现在entity.id应该是一个大于0的随机数。这就是我需要的,让Rhino Mocks更新实体的ID给定的整数。这可能吗?

号如果你不嘲讽_scheduleRepository,犀牛制品不知道这件事。你为什么不想要嘲笑_scheduleRepository

编辑:好了,现在我看你想要做什么用“WhenCalled”扩展方法来定义代码时Rhino.Mocks截获通话将被执行这样的事情应该工作:。

_scheduleRepository.Expect(s => s.Save(schedule)).WhenCalled(a => ((Schedule) a.Arguments[0]).Id = 1); 
+0

我在嘲笑_scheduleRepository。但是当我打电话给Save(时间表)时,我也希望Rhino Mocks改变时间表的ID。 – 2010-12-10 14:58:07