2

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

4

1 回答 1

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才会返回。enqueueRequestCallreplay

于 2012-06-06T23:08:02.573 回答