模拟总是抛出异常,除非在特定方法上



如何使用 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());

相关内容

  • 没有找到相关文章