2009-06-24 21 views
2

我的測試方法是這樣的:犀牛嘲笑 - 斷言方法調用給定參數

[Test] 
    public void Generated_CaseNumber_should_be_set_as_LastCaseNumber_in_PropertiesManager() 
    {   

     String generatedCaseNumber = _sut.NextCaseNumber(); 

    } 

_sut對象有依賴關係類型IPropertiesManager的嘲笑對象。方法_sut.NextCaseNumber()應該生成唯一的CaseNumber,並將其存儲在IPropertiesManager中(使用UpdateLastCaseNumber()方法),然後返回生成的CaseNumber。

如何斷言_sut.NextCaseNumber()在IPropertiesManager類型上調用UpdateLastCaseNumber()並傳遞給它然後返回給NextCaseNumber()的調用方的相同參數?

回答

1

添加這樣的東西應該可以工作。

using (mocks.Record()) 
{ 
    Expect.On(mockObj).Call(mockObj.UpdateLastCaseNumber(param)).Return(param); 
} 
using (mocks.Playback()) 
{ 
    var expected = param; 
    var actual = _sut.NextCaseNumber(param); 
    Assert.AreEqual(expected, actual); 
} 

(嘲笑=新MockRepository,mockObj = IPropertiesManager)

0

您需要讓_sut使用IPropertiesManager的模擬。

做到這一點的一種方法是更改​​/創建_sut的新構造函數以獲取IPropertiesManager。

當在IPropertiesManager的模擬中爲測試創建_sut時。在實際代碼中使用它時,請發送實際對象或使用創建IPropertiesManager的其他構造函數。