public void someMethod() throws Exception {
// null
when(request.getParameter("abc")).thenReturn(null);
try {
abc.manageIncome(request, response, nancy, null);
fail();
} catch(IllegalArgumentException ex) {}
verify(nancy.manageIncome(request, response, nancy, "abc"));
}
我收到以下错误:java.lang.AssertionError
。
如何解决?我正在使用Mockito。
答案 0 :(得分:3)
我无法告诉您这是否与您的AssertionError
有关,但是您滥用了verify
方法,该方法(与when
不同)应仅包含所讨论的模拟而不是整个方法调用。
/* BAD */ verify(nancy.manageIncome(request, response, nancy, "abc"));
/* GOOD */ verify(nancy).manageIncome(request, response, nancy, "abc");
(为什么?基本上,只有在模拟返回的方法之后调用when
,因此模拟可以将其未来的存根基于刚发生的调用。verify
需要在调用之前调用在mock上调用方法,因此它不会将验证与来自被测系统的实际调用混淆,并在适当时抛出或返回。)