【问题标题】:EasyMock's niceMock equivalent for RhinoMocksEasyMock 与 RhinoMocks 等效的 niceMock
【发布时间】:2012-01-27 14:19:31
【问题描述】:

EasyMock 框架(Java 的模拟)有一个非常巧妙的方法createNiceMock,它是:

创建一个实现给定接口的 mock 对象,默认禁用顺序检查,并且 mock 对象将返回 0、null 或 false 用于意外调用。

我想知道 Rhino Mocks 框架中的一些等效方法可以用 0、null 或 false 模拟意外调用(我对 顺序检查 不感兴趣,但如果它会不会也可以)

【问题讨论】:

    标签: mocking rhino-mocks easymock


    【解决方案1】:

    这些是dynamic mock的特征:

    动态模拟 - 松散的重播语义。通过调用 DynamicMock() 创建

    松散重放语义:接受重放状态期间的所有方法调用。如果给定方法没有特殊处理设置,则返回 null 或零。必须调用所有预期的方法,对象才能通过验证。

    在早期版本中,您必须明确创建一个:

    var mocks = new MockRepository();
    var service = mocks.DynamicMock<IService>();
    

    现在,默认情况下,只要您使用 MockRepository.GenerateMock&lt;T&gt;() 方法创建模拟,就假定模拟是动态模拟。预期调用顺序也无关。假设我们的期望设置如下:

    var dependency = MocksRepository.GenerateMock<IDependency>();
    dependency.Expect(d => d.SecondMethod());
    dependency.Expect(d => d.FirstMethod());
    

    测试代码如下例

    public void DoWork()
    {
        this.Dependency.FirstMethod();
        this.Dependency.SecondMethod();
        this.Dependency.ThirdMethod();
    }
    

    不会导致测试失败。顺序无关紧要,意外调用将被忽略并返回默认值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多