我希望能够通过桩方法调用40次,先抛出异常,然后再返回真实对象。据我所知,Mockito 1.10.8的thenThrow()
方法接受n个Throwable参数:
OngoingStubbing<T> thenThrow(Throwable... throwables);
因此,我认为我可以采取以下措施。
@RunWith(MockitoJUnitRunner.class)
public class MyObjectTest
{
@Mock(answer = Answers.RETURNS_MOCKS)
private Mama mama;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Papa papa;
private MyObject _instance;
@Test
public void test()
{
_instance = new MyObject(papa, mama);
Throwable[] exceptions = new Throwable[41];
Arrays.fill(exceptions, 0, 40, new ConnectionException("exception message"));
when(papa.getMapper().map(anyString())).thenThrow(exceptions).thenReturn(new MyMap());
verify(papa, times(41)).getMapper().map(anyString());
}
}
然而,当我运行此测试时,会出现以下情况。
org.mockito.exceptions.base.MockitoException: 无法使用空异常进行存根! at MyObjectTest.test(MyObjectTest.java:105)
MyObjectTest.java:105是存根化发生的行。
为什么会出现这个错误?
thenThrow(new ConnectionException("exception message"))
进行替换,它是否仍会抛出MockitoException? - jlewkovichexceptions
对象的过程是否正确,确保数组内部的值不是 null。 - jlewkovich