让我们假设以下测试
public void someTest() throws Exception {
Foo foo = spy(new Foo());
foo.someMethod(); // invokes methodToBeVerified()
verify(foo).methodToBeVerified();
}
当测试执行时,它会调用 foo.methodToBeVerified()
的实际实现。我希望测试来验证是否已调用该特定方法但是我不希望执行其实现。是否可以使用 Mockito 的 Spy 来做到这一点?
最佳答案
是的,使用
doNothing().when(foo).methodToBeVerified();
如下例所示
public class FooTest {
static class Foo {
public void someMethod() {
System.out.println("someMethod called");
System.out.println("calling method to be verified...");
methodToBeVerified();
}
public void methodToBeVerified() {
System.out.println("methodToBeVerified called");
}
}
@Test
public void someTest() throws Exception {
Foo foo = spy(new Foo());
doNothing().when(foo).methodToBeVerified();
foo.someMethod();
verify(foo).methodToBeVerified();
}
}
<小时/>
作为引用,您正在寻找的内容称为部分模拟。 Real (spied) partial mocks从 1.8.0 开始在 Mockito 中得到支持。
关于java - 验证方法调用而不在 Spy 上执行其实际实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34412605/