2010-12-08 96 views
3

這很難解釋我在尋找什麼,但我的示例應該澄清它。在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給定的整數。這可能嗎?

回答

3

號如果你不嘲諷_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