我试图在Mock上使用Mockito:
当使用argument1调用Mock.someMethod(..)时 - >返回result1
当使用argument2调用Mock.someMethod(..)时 - >返回result2
当Mock.someMethod使用argument3 - > 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);
Run Code Online (Sandbox Code Playgroud)
但是Mockito正确地存储了第一个,但是在第二个上它会抛出NullPointer异常,因为它出于某种原因试图运行带有null agrument的Matcher.我不确定它是否得到支持.
如果这不是正确的方法,如何用Mockito实现这一目标?谢谢.
Daw*_*ica 20
而不是写作
when(mock.method(Matchers.argThat(new MyMatcher1() {
@Override
public boolean matches(Object arg0) {
// comparison logic
}
}))).thenReturn(result1);
Run Code Online (Sandbox Code Playgroud)
试试这个.
doReturn(result1).when(mock).method(Matchers.argThat(new MyMatcher1() {
@Override
public boolean matches(Object arg0) {
// comparison logic
}
}));
Run Code Online (Sandbox Code Playgroud)
同样的result2
和result3
.
这在http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#12中有描述,但在我看来,文档不清楚这个结构实际上是否需要这个案件.我将与Mockito团队的其他成员讨论如何改进文档.
祝好运.
我现在可以通过在自定义 ArgumentMatcher 中进行空检查来解决这个问题。它起作用了,因为 NPE 仅在启动期间 Mockito 调用 when() 语句时出现。此时它甚至不应该调用 ArgumentMatcher.matches()!感觉就像 Mockito 中的一个错误。
归档时间: |
|
查看次数: |
3042 次 |
最近记录: |