我正试图用Mockito实现这种行为:
当类型O的对象应用于方法M时,mock应该对类型为O的对象执行另一个方法,将其自身作为参数传递。
毕竟有可能吗?
答案 0 :(得分:6)
您可以使用doAnswer
和when
结合Mockito.any
的某种组合。 doAnswer
是PowerMockito的一部分,有助于扩展您可能想要做的很多嘲弄。
注意,doAnswer
用作void函数的示例。对于非空格,您可以使用标准Mockito.when(MOCK.call).then(RESULT)
PowerMockito.doAnswer(new org.mockito.stubbing.Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
//Do whatever to Object O here.
return null;
}).when(MOCKOBJECT.methodCall(Mockito.any(O.class)));
然后在模拟对象上执行有用的doAnswer
功能,使用when
可以将其分配给任何特定类别的对象(而不是必须指定一个确切的对象)期待)。使用Mockito.any(Class.class))
作为参数的一部分,让Mockito知道当你使用传入的指定类型的任何对象进行方法调用时,触发你的doWhatever。