帮助,任何人都可以帮助解释Rhino Mocks'Record'范围的目的吗?
我假设在范围内设置的期望只会被验证,但是一旦你创建了模拟对象,Rhino Mocks就处于'记录模式',所以我现在不确定Record范围的目的
这是我的一个例子:
private static void SomeTest()
{
MockRepository mockRepository = new MockRepository();
ISomeInterface test = mockRepository.StrictMock<ISomeInterface>();
test.Bar();
using (mockRepository.Record())
{
Expect.Call<string>(test.GetFoo()).Return("Hello");
}
using (mockRepository.Playback())
{
test.GetFoo();
}
}
public interface ISomeInterface
{
string GetFoo();
void Bar();
}
此测试将失败,因为期望应调用 Bar 。是因为我创建了StrictMock而不是Dynamic?
答案 0 :(得分:5)
此测试将失败,因为没有期望调用Bar(),但 被调用。
回答你的问题,是的,这是因为你有一个严格的模拟。如果您更改为DynamicMock,它将忽略除实际设置的期望之外的所有内容。我强烈建议尽可能使用DynamicMocks,因为StrictMocks实际上非常脆弱,并且最终会有很多麻烦。
对于Record / Replay,如果您使用的是具体的MockRepository,它不会自动处于Record模式。只是StrictMock的本质是寻找任何被称为超出预期的东西,无论何时。