我正在使用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, ...)
答案 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
。