在同一模拟上使用多个参数匹配器
我试图在 Mock 上使用 Mockito 执行此操作:
当 Mock.someMethod(..) 使用 argument1 调用时 -->返回 result1
当 Mock.someMethod(..) 使用 argument2 调用时 -->返回 result2
当 Mock.someMethod(..) 使用 argument3 调用时 -->返回 result3
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实现这一目标?谢谢。