在同一模拟上使用多个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

回到顶部