如果我了解您要正确执行的操作,则应该可以使用
andAnswer():
mockObject.someMethod(eq(param1), eq(param2));expectLastCall().andAnswer(new IAnswer() { public Object answer() { //supply your mock implementation here... SomeClass arg1 = (SomeClass) getCurrentArguments()[0]; AnotherClass arg2 = (AnotherClass) getCurrentArguments()[1]; arg1.doSomething(blah); //return the value to be returned by the method (null for void) return null; }});《EasyMock用户指南》解释了:
创建返回值或异常
有时,我们希望我们的模拟对象返回一个值或引发在实际调用时创建的异常。从EasyMock
2.2开始,由expectLastCall()和返回的对象expect(Tvalue)提供了andAnswer(IAnsweranswer)[允许]指定IAnswer用于创建返回值或异常的接口的实现的方法。在
IAnswer回调内部,可以通过传递给模拟调用的参数EasyMock.getCurrentArguments()。如果使用这些,则诸如重新排序参数之类的重构可能会破坏测试。你被警告了。



