我正在尝试在 Mock 上使用 Mockito 来执行此操作:
当 Mock.someMethod(..) 用 argument1 调用时 --> return result1
当 Mock.someMethod(..) 用 argument2 调用时 --> return result2
当 Mock.someMethod (..) 使用参数 3 调用 --> 返回结果 3
when(mock.method(Matchers.argThat(new MyMatcher1() {
@Override
public boolean matches(Object arg0) {
// comparision logic
}
}))).thenReturn(result1);
when(mock.method(Matchers.argThat(new MyMatcher2() {
@Override
public boolean matches(Object arg0) {
// comparision logic
}
}))).thenReturn(result2);
when(mock.method(Matchers.argThat(new MyMatcher3() {
@Override
public boolean matches(Object arg0) {
// comparision logic
}
}))).thenReturn(result3);
但是 Mockito 正确地存根第一个,但是在第二个上它抛出 NullPointer 异常,因为它出于某种原因尝试使用 null agrument 运行 Matcher。我不确定它是否受支持。
如果这不是正确的方法,如何使用 Mockito 来实现?谢谢。