1
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。

4

1 回答 1

3

我无法告诉您这是否与您的 相关AssertionError,但您正在滥用该verify方法,该方法(与 不同when)应该只包装有问题的模拟,而不是整个方法调用。

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

(为什么?基本上,when只有在mock上的方法返回之后才被调用,所以mock可以将它未来的存根建立在刚刚发生的调用上。verify需要在mock上调用方法之前调用,所以它不会混淆通过来自被测系统的实际调用进行验证,并根据需要抛出或返回。)

于 2013-02-14T02:27:02.837 回答