2014-01-21 24 views
0

鑑於從我的測試下面的代碼片段:斷言方法被調用,同時驗證參數是否正確

var mockProvider = MockRepository.GenerateMock<IItemProvider>(); 

var target = new ItemService(mockProvider); 

target.SaveItem(item); 

內部target.SaveItem使得這樣一個電話:

provider.SaveItem(new SaveContract(item.Id, user, contents));其中provider是本地名稱mockProvider傳遞

我如何:

  1. 驗證provider.SaveItem被稱爲同時也
  2. 他斷言的item.Idusercontents的值,因爲他們應該。

我想我可能能夠使用mockProvider.AssertWasCalled但不能找出語法來設置傳遞到的SaveContract構造函數的參數的條件。

TIA

+1

參見:http://stackoverflow.com/questions/6413040/rhino-mocks-how-to-assert這個動作叫做 – jessehouwing

+0

但是'AssertWasCalled'返回void,我怎麼調用'WhenCalled'呢? – MattC

+1

哦,我只看到'期望'的作品。 – MattC

回答

0

好了,所以基於this我不喜歡的東西如下:

var mockProvider = MockRepository.GenerateMock<IItemProvider>(); 
var target = new ItemService(mockProvider); 
Item testItem = null; 

mockProvider.Expect(c => c.SaveItem(Arg<Item>.Is.Anything)) 
.WhenCalled(call => 
{ 
    testItem = (Item)call.Arguments[0]; 
}); 


target.SaveItem(item);//item initialised elsewhere 


Assert.AreEqual(item.Id, testItem.Id); 
相關問題