2013-01-23 55 views
2

我有一个间接使用类Foo的测试用例。我不在乎Foo是用于测试用例的目的。我应该可以嘲笑它。如何使用EasyMock创建“深”模拟

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

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

我一直在经历和加入的期望呼叫一大堆类似下面的每个对象和方法,这个库调用:

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自动返回通过模拟对象获得的任何对象的模拟对象。

回答

1

事实证明了的Mockito内置此功能:

Foo mock = Mockito.mock(Foo.class, Mockito.RETURNS_DEEP_STUBS); 
相关问题