首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >犀牛Mocks记录回放语法

犀牛Mocks记录回放语法
EN

Stack Overflow用户
提问于 2009-05-23 11:19:00
回答 1查看 2.6K关注 0票数 4

救命,有人能帮忙解释犀牛的记录范围吗?

我假设范围内设置的期望只会被验证,但是一旦创建了模拟对象,Rhino就处于“记录模式”,所以我现在不确定记录作用域的用途。

下面是我的一个例子:

代码语言:javascript
复制
    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而不是动态的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-05-23 14:30:28

这个测试将失败,因为没有人期望Bar()会被调用,但是它被调用了。

回答你的问题,是的,这是因为你有一个严格的嘲弄。如果您更改为一个DynamicMock,它将忽略除您实际设置的期望之外的所有内容。我强烈建议在任何可能的情况下使用DynamicMocks,因为StrictMocks实际上很脆弱,而且最终往往会遇到很多麻烦。

至于记录/重放,如果您使用的是具体的MockRepository,则不会自动处于记录模式。StrictMock的本质就是寻找任何超出预期的调用,无论何时调用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/901353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档