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。
我不能告诉您这是否与您的AssertionError
有关,但您滥用了verify
方法,该方法(与when
不同(应该只包装有问题的mock,而不是整个方法调用。
/* BAD */ verify(nancy.manageIncome(request, response, nancy, "abc"));
/* GOOD */ verify(nancy).manageIncome(request, response, nancy, "abc");
(为什么?基本上,when
只在mock上的方法返回后调用,因此mock可以将其未来的存根建立在刚刚发生的调用的基础上。verify
需要在mock调用方法之前调用,这样它就不会将验证与测试中系统的实际调用混淆,并根据需要抛出或返回。(