如何使用 Mockito 创建一个模拟,该模拟在每个方法调用上抛出异常,除了一些存根调用?直观地,我通过提供这样的默认答案来尝试它:
Iterator themock = mock(Iterator.class,
new ThrowsExceptionClass(UnsupportedOperationException.class));
when(themock.hasNext()).thenReturn(false);
assertFalse(themock.hasNext());
但是第二行中的呼叫themock.hasNext()
已经抛出了UnsupportedOperationException
.
Mockito无法知道第二行中的调用themock.hasNext()是在存根期间,因为实际调用时间是在该调用完成后完成的。如果您使用 doReturn 进行模拟,它确实知道并且不应用默认答案:
Iterator themock = mock(Iterator.class,
new ThrowsExceptionClass(UnsupportedOperationException.class));
doReturn(false).when(themock).hasNext();
assertFalse(themock.hasNext());