如果我们有这个代码:
@Test
public void test1(){
Interface1 i1 = mock(Interface1.class)
method1(); // This method calls i1.mockedmethod()
verify(i1, times(1)).mockedmethod();
method1();
verify(i1, times(2)).mockedmethod();
}
我知道它会通过第一次验证,但我对第二次验证有疑问。验证方法是否一直计算方法被调用的次数,或者自上次验证以来它只计算它?
答案 0 :(得分:14)
请注意,可以重置通过Mockito.reset(mock)调用方法的时间
答案 1 :(得分:12)
使用 void reset(T... mocks) 将重置模拟上的所有存根。如果您只需要为后续验证重置调用计数,请使用 void clearInvocations(T... mocks)。
答案 2 :(得分:5)
一旦创建,mock将记住所有交互。然后,您可以有选择地验证您感兴趣的任何互动。
这意味着每次调用所需的方法时,模拟都会计数,而当您调用verify
时,模拟不会重置。
如果您想了解更多相关信息,请阅读此内容( 这是我找到这些信息的地方):
http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html
答案 3 :(得分:2)
Mockito会记住,所以它从第一次互动开始计算,不会重置。
另请注意,verify(i1, times(1)).mockedmethod();
与verify(i1).mockedmethod();
相同。
有关mockito here的更多信息。