EasyMock如何捕获被测试方法调用的void方法的参数?

时间:2018-07-18 21:22:20

标签: java mocking easymock

从文档中,我的理解是,ExpectLastCall()将用于void方法,而不是Expect(),因此在执行此操作时我会在Eclipse中抱怨。

Capture<String> capturedArgument = new Capture<>();
expect(testObject.voidMethodName(capture(capturedArgument)));

How to expect void method call with any argument using EasyMock不起作用。

2 个答案:

答案 0 :(得分:1)

您只需要调用void方法来记录它。

Capture<String> capturedArgument = new Capture<>();
testObject.voidMethodName(capture(capturedArgument));
replay(testObject);

就是这样。这隐含意味着您希望void方法被调用一次。添加expectLastCall().once();expectLastCall();的意思是完全一样的,而且没有用。

您不能调用expect(),因为void方法不会返回任何内容。因此,您无法将其作为参数传递给expect()

您可能想知道为什么expectLastCall()存在。有两个原因:

  1. 对于特殊的“返回”,例如expectLastCall().andThrow(e)
  2. 记录特定数量的电话,例如expectLastCall().atLeastOnce()

答案 1 :(得分:0)

TestClass testObj = new TestClass();

Capture<String> capturedArgument = new Capture<>(); //change type as needed
testObj.voidMethodName(capture(capturedArgument));
expectLastCall().atLeastOnce();//adjust number of times as needed
//may need additional replay if you have an additional mocks control object
replay(testObj);

testObj.methodUnderTest();