3

我有一个间接使用类的测试用例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 为通过模拟对象获得的任何对象自动返回模拟对象。

4

1 回答 1

2

事实证明,mockito 内置了这个功能:

Foo mock = Mockito.mock(Foo.class, Mockito.RETURNS_DEEP_STUBS);
于 2013-01-23T06:06:53.247 回答