救命,有人能帮忙解释犀牛的记录范围吗?
我假设范围内设置的期望只会被验证,但是一旦创建了模拟对象,Rhino就处于“记录模式”,所以我现在不确定记录作用域的用途。
下面是我的一个例子:
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而不是动态的吗?
发布于 2009-05-23 14:30:28
这个测试将失败,因为没有人期望Bar()会被调用,但是它被调用了。
回答你的问题,是的,这是因为你有一个严格的嘲弄。如果您更改为一个DynamicMock,它将忽略除您实际设置的期望之外的所有内容。我强烈建议在任何可能的情况下使用DynamicMocks,因为StrictMocks实际上很脆弱,而且最终往往会遇到很多麻烦。
至于记录/重放,如果您使用的是具体的MockRepository,则不会自动处于记录模式。StrictMock的本质就是寻找任何超出预期的调用,无论何时调用。
https://stackoverflow.com/questions/901353
复制相似问题