【发布时间】:2012-12-12 19:06:16
【问题描述】:
我正在尝试在 Mock 上使用 Mockito 来做到这一点:
当使用参数 1 调用 Mock.someMethod(..) 时 --> 返回结果 1
当使用 argument2 调用 Mock.someMethod(..) 时 --> return result2
当使用 argument3 调用 Mock.someMethod(..) 时 --> return 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 来实现?谢谢。
【问题讨论】:
-
知道了,我总是点击那些箭头说它很有用,我认为这归功于回答的人。可能不是,我去看看。谢谢。关于链接,虽然它是一个布尔匹配器,但我创建的 ArgumentMatcher 也是一个布尔匹配器,我不认为我的与这个不同,但会尝试让你知道。
-
链接不是很好:) 请参阅该页面上的
argThatjavadoc。它确实提到了NPE。