【问题标题】:How to create a "deep" mock with EasyMock如何使用 EasyMock 创建“深度”模拟
【发布时间】:2013-01-23 05:32:28
【问题描述】:

我有一个间接使用类Foo 的测试用例。出于测试用例的目的,我不在乎 Foo 是什么。我应该可以模拟它。

Foo mock = EasyMock.createMock(Foo.class);

但是,测试用例使用了一个在 Foo 上调用一些方法的库。其中一些方法返回对象,然后这个库对这些返回的对象调用一些方法。就本测试而言,这些对象是什么并不重要,只要它们不为 null 并且不会导致 NullPointerExceptions。

我一直在为这个库调用的每个对象和方法添加一大堆期望调用,如下所示:

Bar bar = EasyMock.createMock(Bar.class);
Baz baz = EasyMock.createMock(Baz.class);
EasyMock.expect(mock.getBar()).andReturn(bar).anyTimes();
EasyMock.expect(bar.getBaz()).andReturn(baz).anyTimes();

基本上,只是一遍又一遍地为这个库最终调用的任何方法创建期望。

同样,对于我的测试而言,对象本身并不重要。库只需要它们在大多数情况下是非空的。

有没有办法让这个自动化?我想要的是某种“深度模拟”功能,我可以告诉 EasyMock 为通过模拟对象获得的任何对象自动返回模拟对象。

【问题讨论】:

    标签: easymock


    【解决方案1】:

    原来 mockito 内置了这个功能:

    Foo mock = Mockito.mock(Foo.class, Mockito.RETURNS_DEEP_STUBS);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      相关资源
      最近更新 更多