Java 在Mockito中,如何在间谍对象的情况下调用real方法?
我需要能够根据某些条件调用间谍对象的实际方法。也就是说,如果条件为true,则调用real方法,否则执行其他操作 为了清楚起见,我需要在第一次调用时抛出一个异常,在第二次调用时调用real方法。使用Mockito可以实现吗Java 在Mockito中,如何在间谍对象的情况下调用real方法?,java,mocking,mockito,spy,Java,Mocking,Mockito,Spy,我需要能够根据某些条件调用间谍对象的实际方法。也就是说,如果条件为true,则调用real方法,否则执行其他操作 为了清楚起见,我需要在第一次调用时抛出一个异常,在第二次调用时调用real方法。使用Mockito可以实现吗 Object object = Mockito.spy(new Object()); // On the first call I need to throw an exception like this Mockito.doThrow(RuntimeException.c
Object object = Mockito.spy(new Object());
// On the first call I need to throw an exception like this
Mockito.doThrow(RuntimeException.class).when(object).toString();
// On the second call I need to call a real method
Mockito.doCallRealMethod().when(object).toString();
简单,当(…)时使用。然后(…)
,因为这允许模拟规范的“流畅链接”:
Object object = Mockito.spy(new Object());
Mockito.when(object.toString()).thenThrow(new RuntimeException()).thenReturn("yeha");
try {
System.out.println(object.toString());
fail();
} catch(RuntimeException r) {
System.out.println(object.toString());
}
印刷品:
耶哈
耶哈
严肃地说:您应该更喜欢
when(mock.foo())。然后…
无论如何(请参阅以获取原因列表)。有一些情况下需要使用doReturn().when()
,但正如所说:这是您的最后手段,而不是您的第一选择。非常感谢您的回答!这就是我需要的!谢谢你非常有用的回答!爱猫