java.lang.AssertionError:在Mockito中。怎么解决?

时间:2013-02-13 23:45:53

标签: java maven intellij-idea mockito

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。

1 个答案:

答案 0 :(得分:3)

我无法告诉您这是否与您的AssertionError有关,但是您滥用了verify方法,该方法(与when不同)应仅包含所讨论的模拟而不是整个方法调用。

/* BAD */  verify(nancy.manageIncome(request, response, nancy, "abc"));
/* GOOD */ verify(nancy).manageIncome(request, response, nancy, "abc");

(为什么?基本上,只有在模拟返回的方法之后调用when,因此模拟可以将其未来的存根基于刚发生的调用。verify需要在调用之前调用在mock上调用方法,因此它不会将验证与来自被测系统的实际调用混淆,并在适当时抛出或返回。)