忽略 Mockito 中的方法调用

发布于 2024-11-07 06:23:29 字数 325 浏览 1 评论 0原文

使用 Mockito,是否可以忽略对模拟的方法调用?

例如,对于使用 mock(MyRugger.class) 创建的模拟 rugger

class Pepe {

  public void runner() {     
    rugger.doIt(); 
    rugger.flushIt();
    rugger.boilIt();     
  } 
}

我只需要测试 runner() 但避免使用方法 flushIt ()

With Mockito, is it possible to ignore a method call to a mock?

E.g. for the mock rugger created with mock(MyRugger.class):

class Pepe {

  public void runner() {     
    rugger.doIt(); 
    rugger.flushIt();
    rugger.boilIt();     
  } 
}

I need only test runner() but avoid the method flushIt().

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

稀香 2024-11-14 06:23:29

要在 Mockito 中重置模拟,只需调用 reset就可以了。请注意上述链接和 JavaDoc for reset 指出它可能代表了糟糕的设计。

通常应该避免这种情况,但有时您只是需要这样做。下面是一个关于如何使用它的示例,不是何时使用它的一个很好的例子。

Object value = mock(Object.class);

when(value.equals(null)).thenReturn(true);
assertTrue(value.equals(null));
verify(value).equals(null);

reset(value);

assertFalse(value.equals(null));
verify(value).equals(null);

To reset a mock in Mockito, simply call reset on it. Note the very real concern mentioned in the above link and the JavaDoc for reset stating that it may represent bad design.

This should generally be avoided, but there are times when you simply need to do this. The below is an example on how to use it, not a good example of when to use it.

Object value = mock(Object.class);

when(value.equals(null)).thenReturn(true);
assertTrue(value.equals(null));
verify(value).equals(null);

reset(value);

assertFalse(value.equals(null));
verify(value).equals(null);
我不咬妳我踢妳 2024-11-14 06:23:29

Mockito 很好,除非您要求,否则不会验证呼叫。因此,如果您不想验证 flush(),只需验证您关心的方法:

verify(rugger).doIt();
verify(rugger).boilIt();

如果您想验证 flush() 未被调用,请使用:

verify(rugger, never()).flush();

Mockito is nice and will not verify calls unless you ask it to. So if you don't want to verify flush() just verify the methods you care about:

verify(rugger).doIt();
verify(rugger).boilIt();

If you want to verify that flush() was NOT called, use:

verify(rugger, never()).flush();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文