【问题标题】:java.lang.AssertionError: in Mockito. How to fix it?java.lang.AssertionError:在 Mockito 中。如何解决?
【发布时间】:2013-02-13 23:45:52
【问题描述】:
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。

【问题讨论】:

  • 哪一行?错误消息中有更多信息吗?
  • 错误在hte第5行,即尝试{
  • try{ 不会抛出 AssertionError,如果那是行,那么它没有运行此代码,即代码已被修改但未编译或部署。

标签: java maven intellij-idea mockito


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    相关资源
    最近更新 更多