在同一模拟上使用多个ArgumentMatchers
我正在尝试在Mock上使用Mockito来执行此操作:
当使用parameter1 调用Mock.someMethod(..)->返回result1
当使用parameter2调用Mock.someMethod(..)时-> return result2
当Mock.someMethod (..)用参数3调用->返回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正确地对第一个进行了存根,但是在第二个上,它由于某些原因尝试以null增值来运行Matcher而引发NullPointer异常。我不确定是否支持。
如果这不是正确的方法,那么如何使用Mockito实现此目的?谢谢。
回答:
通过在自定义ArgumentMatcher中进行空检查,我现在能够解决该问题。它起作用了,因为NPE仅在启动期间当Mockito调用when()语句时才起作用。此时甚至不应该调用ArgumentMatcher.matches()!感觉就像是Mockito中的错误。
以上是 在同一模拟上使用多个ArgumentMatchers 的全部内容, 来源链接: utcz.com/qa/408997.html