我有以下课程:
public class A extends B {
public A(T t) {
this.t = t;
}
public void reg(Manager manager) {
//some operations
}
public void unreg(Manager manager) {
manager.function1(this);
}
@Override
public void getData(Context context, final Intent intent) {
t.function1();
t.function2();
}
T t;
}
现在,在这个类中我想模拟getData方法而不是其他2个方法。因此,每当使用context和intent调用getData时,我想执行我的自定义方法。但是对于reg和unreg,我想调用原始函数。请注意,所有返回数据类型都为void。
我是Mockito和java的新手。我写了以下代码:
A mockA = Mockito.mock(A.class);
Manager mockMan = Mockito.mock(Manager.class);
doCallRealMethod().when(mockA).register(eq(mockMan));
doCallRealMethod().when(mockA).unregister(eq(mockMan));
doAnswer(new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) throws Throwable {
Context getContextArg = (Context) invocation.getArguments()[0];
Intent getIntentArg = (Intent) invocation.getArguments()[1];
//mockgetData will be the function I want to call instead
mockgetData(getContextArg,getIntentArg);
}
}).when(mockA).getData(eq(getContext()),eq(new Intent()));
我面临的问题是,要模拟getData,我必须在构造函数设置的对象t上调用一些函数。当实例化A类时,如何在调用原始构造函数时使用T对象的值。 我不确定我是否正确使用了doAnswer。任何帮助将不胜感激。