使用Mockito,是否可以忽略对模拟的方法调用?
E.g。对于使用rugger
创建的模拟mock(MyRugger.class)
:
class Pepe {
public void runner() {
rugger.doIt();
rugger.flushIt();
rugger.boilIt();
}
}
我只需要测试runner()
,但请避免使用方法flushIt()
。
答案 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