是否有一种模拟此调用的简单方法:
objectA.getB().getC();
现在,我这样做的方式是:
A mockA = EasyMock.createMock(A.class);
B mockB = EasyMock.createMock(B.class);
C mockC = EasyMock.createMock(C.class);
expect(mockA.getB()).andReturn(mockB);
expect(mockB.getC()).andReturn(mockC);
这有点过分,因为我所关心的只是获得mockC。有没有更简单的方法呢?
答案 0 :(得分:1)
我知道问题是关于EasyMock的,但我不能只是坐在我的手上而不是告诉你关于Mockito的事。 你想做的嘲弄,在Mockito中相当容易。
A mockA = Mockito.mock(A.class, RETURNS_DEEP_STUBS);
C mockC = Mockito.mock(C.class);
Mockito.when(mockA.getB().getC()).thenReturn(mockC);
请注意,Mockito开始作为EasyMock的增强功能,您可以在此处阅读更多相关内容:https://code.google.com/p/mockito/wiki/MockitoVSEasyMock
答案 1 :(得分:0)
不,没有 - 如果您想在测试中使用模拟替换A
,B
和C
,则需要三个模拟对象。
另一种方法是使用真实的A
和B
类,并仅用模拟对象替换C
。然后你的单元测试将测试
objectA.getB().getC()
A
B
作为“单位”在一起。这是否有意义取决于具体情况。