我有一个间接使用类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为通过模拟对象获得的任何对象自动返回模拟对象。
最佳答案
事实证明,mockito具有内置的此功能:
Foo mock = Mockito.mock(Foo.class, Mockito.RETURNS_DEEP_STUBS);
关于easymock - 如何使用EasyMock创建“深度”模拟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14473088/