我正在尝试模拟方法的结果。结果应该有两种变体:
Mockito.when(class.method(a,b)).thenReturn(c);
a-b
等于20 a-b
不是20。如何编写两个不同的语句并返回不同的结果?
P.S。我知道如何为一个参数使用条件。例如:
class MyCondition extends ArgumentMatcher<AClass> {
public boolean matches(Object sd) {
boolean toReturn = (sd instanceof AClass) && (sd >15);
return toReturn;
}
}
Mockito.when(class.method(Mockito.argThat(new MyCondition()),b)).thenAnswer(
new Answer<BClass>() {
public BClass answer(InvocationOnMock invocation) {
return new BClass();
}
});
但是如何为TWO方法参数构建条件?
答案 0 :(得分:3)
使用Answer
:
Mockito.when(instance.method(Mockito.anyInt(), Mockito.anyInt()))
.thenAnswer(
new Answer<Integer>() {
@Override public Integer answer(InvocationOnMock invocation) {
int a = (Integer) invocation.getArguments()[0];
int b = (Integer) invocation.getArguments()[1];
if (a - b == 20) {
return ...;
} else {
return ...;
}
}
});