我的测试方法如下:
[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()的调用者?
答案 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的不同构造函数。