EasyMock:无效方法
我有一个方法,该方法在要测试的类的依赖项的类中返回void。
此类非常庞大,我仅使用其中的一种方法。我需要替换此方法的实现以进行测试,因为我希望它做一些不同的事情,并且需要能够访问此方法接收的参数。
我在EasyMock中找不到做到这一点的方法。我想我知道如何使用Mockito做到这一点,doAnswer
但除非绝对必要,否则我不想添加其他库。
回答:
如果我了解您要正确执行的操作,则应该可以使用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(T
value)提供了
andAnswer(IAnswer
answer)[允许]指定
IAnswer
用于创建返回值或异常的接口的实现的方法。在
IAnswer
回调内部,可以通过传递给模拟调用的参数EasyMock.getCurrentArguments()
。如果使用这些,则诸如重新排序参数之类的重构可能会破坏测试。你被警告了。
以上是 EasyMock:无效方法 的全部内容, 来源链接: utcz.com/qa/404920.html