Rhino模拟 - 使用给定参数调用assert方法

时间:2009-06-24 20:05:29

标签: .net mocking rhino-mocks

我的测试方法如下:

[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()的调用者?

2 个答案:

答案 0 :(得分: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);
}

(mocks = new MockRepository,mockObj = IPropertiesManager)

答案 1 :(得分:0)

您需要让_sut使用模拟IPropertiesManager。

执行此操作的一种方法是更改​​_sut的/ create anew构造函数以获取IPropertiesManager。

在IPropertiesManager的模拟中为测试发送创建_sut时。在真实代码中使用它时,要么发送真实对象,要么使用创建IPropertiesManager的不同构造函数。