使用Mockito时,可以像下面这样对方法调用进行存根:
when(mock.someMethod("some arg"))
.thenThrow(new RuntimeException())
.thenReturn("foo");
但是,当您的方法返回时,void
您需要使用以下格式存根:
doAnswer(new Answer() {..).when(mock). someMethod("some arg");
想像我有一个Worker.class
这样的人
class Worker {
void doWork(Callback callback) {
boolean success= ...;
if(success){
callback.onSuccess();
}else {
callback.onFail();
}
}
}
您可以使用以下代码对呼叫进行存根:
doAnswer(new Answer() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Callback callback= invocation.getArguments()[0];
callback.onSuccess();
return null;
}
}).when(mockWorker).doWork(any(Callback.class));
现在想像一下,我想对工作人员连续进行三个呼叫,以进行呼叫onFail, onSuccess, onFail
该怎么做?我需要在每个answer(InvocationOnMock invocation)
调用中重新配置模拟吗?
奥基找到了答案。您只需要像下面这样链接对doAnswer的调用:
doAnswer(new Answer() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Callback callback= invocation.getArguments()[0];
callback.onFail();
return null;
}
}).
doAnswer(new Answer() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Callback callback= invocation.getArguments()[0];
callback.onSuccess();
return null;
}
}).
doAnswer(new Answer() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Callback callback= invocation.getArguments()[0];
callback.onFail();
return null;
}
}).when(mockWorker).doWork(any(Callback.class));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句