2009-06-24 100 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的其他构造函数。