如何验证方法未在对象的依赖项上调用?
例如:
public interface Dependency {
void someMethod();
}
public class Foo {
public bar(final Dependency d) {
...
}
}
通过Foo测试:
public class FooTest {
@Test
public void dependencyIsNotCalled() {
final Foo foo = new Foo(...);
final Dependency dependency = mock(Dependency.class);
foo.bar(dependency);
**// verify here that someMethod was not called??**
}
}
首先:您应该始终导入mockito静态,这样代码将更加可读(直观):
import static org.mockito.Mockito.*;
实际上有很多方法可以实现这一点,但是使用
verify(yourMock, times(0)).someMethod();
方法,当在其他测试中使用它来断言一定数量的执行时,如下所示:
verify(yourMock, times(5)).someMethod();
备选方案包括:
verify(yourMock, never()).someMethod();
或者,当你真的想确保某个被嘲笑的对象实际上根本没有被调用时,你可以使用:
verifyZeroInteractions(yourMock)
请注意:verifyZeroInteractions(对象…模拟)已弃用。自3.0.1版起。现在推荐的方法是:
verifyNoInteractions(yourMock)
首先:您应该始终导入mockito静态,这样代码将更加可读(直观):
import static org.mockito.Mockito.*;
实际上有很多方法可以实现这一点,但是使用
verify(yourMock, times(0)).someMethod();
方法,当在其他测试中使用它来断言一定数量的执行时,如下所示:
verify(yourMock, times(5)).someMethod();
备选方案包括:
verify(yourMock, never()).someMethod();
或者,当你真的想确保某个被嘲笑的对象实际上根本没有被调用时,你可以使用:
verifyZeroInteractions(yourMock)
请注意:verifyZeroInteractions(对象…模拟)已弃用。自3.0.1版起。现在推荐的方法是:
verifyNoInteractions(yourMock)