easymock,模拟返回模拟

时间:2012-06-06 22:40:22

标签: java easymock

我正在使用EasyMock测试我的Java代码。

我想要模拟的代码片段如下:

requestInfo = mupClient.newEnqueueRequestCall().call(requestArgs);

我嘲笑的方式是:

expect(mupClient.newEnqueueRequestCall()).andReturn(enqueueRequestCall);
final Capture<EnqueueRequestArgs> captureRequestArgs = 
                         new Capture<EnqueueRequestArgs>();
expect(mupClient.newEnqueueRequestCall().call(capture(captureRequestArgs))).
                         andThrow(new MUPCoralException("an exception"));

requestInfo总是null。即使我将.andThrow()部分更改为.andReturn(new RequestInfo()),它仍然是null

我检查了其他类似的帖子但是没有用。现在,我能够对它进行评论,从而创建一个新问题。

解答: 在replay中添加所有模拟对象!示例replay(mockObj1, mockObj2, ...)

1 个答案:

答案 0 :(得分:1)

试试这个:

expect(mupClient.newEnqueueRequestCall()).andReturn(enqueueRequestCall);
final Capture<EnqueueRequestArgs> captureRequestArgs = 
                          new Capture<EnqueueRequestArgs>();
expect(enqueueRequestCall.call(capture(captureRequestArgs))).
                          andThrow(new MUPCoralException("an exception"));

问题是您的enqueRequestCall应该返回requestInfo。只有在您从easymock调用mupClient方法后,enqueueRequestCall才会返回replay