我尝试使用 mockito 2.7.15 测试我的服务。
首先我试试这个:
when(customerDaoMock.find(AdditionalMatchers.not(id1))).thenReturn(null);
但是我得到了一个InvalidUseOfmatchersException
..所以我用谷歌搜索了这个问题并找到了这个stackoverflow question .
之后我的第二次尝试是:
when(customerDaoMock.find(AdditionalMatchers.not(Mockito.argThat(id1)))).thenReturn(null);
但是 Mockito
类不再有方法 argThat
所以我的问题是如何在 mockito 中使用 not
否定方法?
或者对于这个问题还有其他选择或更好的解决方案吗?
最佳答案
这是来自 AdditionalMatchers javadoc 的示例:
//anything but not "ejb"
mock.someMethod(not(eq("ejb")));
这是工作示例:
public static class Tmp {
public String f(Long a) {
return a.toString();
}
}
@Test
public void mockitoTest() {
Tmp mock = Mockito.mock(Tmp.class);
when(mock.f(AdditionalMatchers.not(Mockito.eq(5L)))).thenReturn("42");
Assert.assertEquals("42", mock.f(4L));
Assert.assertNull(mock.f(5L));
}
关于Java mockito 服务测试参数取反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42997010/