忽略Mockito中的方法调用

时间:2011-05-16 18:42:26

标签: java mockito

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

E.g。对于使用rugger创建的模拟mock(MyRugger.class)

class Pepe {

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

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

3 个答案:

答案 0 :(得分:4)

要在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);

答案 1 :(得分:3)

Mockito很不错,除非你要求,否则不会验证通话。因此,如果您不想验证flush(),只需验证您关注的方法:

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

如果要验证未调用flush(),请使用:

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

答案 2 :(得分:0)

使用ignoreStub方法。请参阅此处的文档:

http://static.javadoc.io/org.mockito/mockito-core/2.13.0/org/mockito/Mockito.html