我正在尝试模拟一个方法的结果。结果应该有两种变化:
Mockito.when(class.method(a,b)).thenReturn(c);
- 如果
a-b
等于20 - 如果CCD_ 2不是20
我如何实现写两个不同的语句并返回不同的结果?
附言:我知道如何使用一个参数的条件。例如:
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();
}
});
但是我怎样才能为两个方法参数建立一个条件呢?
使用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 ...;
}
}
});