如何使用Mockito创建一个模拟,该模拟在除某些存根调用之外的每个方法调用上都会引发异常?凭直觉,我尝试通过提供如下默认答案进行尝试:

Iterator themock = mock(Iterator.class,
    new ThrowsExceptionClass(UnsupportedOperationException.class));
when(themock.hasNext()).thenReturn(false);
assertFalse(themock.hasNext());


但是第二行中的呼叫themock.hasNext()已经引发了UnsupportedOperationException

最佳答案

Mockito无法知道第二行中的调用themock.hasNext()是在存根期间,因为实际的对when的调用是在该调用完成之后进行的。如果使用doReturn进行模拟,它会知道并且不会应用默认答案:

Iterator themock = mock(Iterator.class,
    new ThrowsExceptionClass(UnsupportedOperationException.class));
doReturn(false).when(themock).hasNext();
assertFalse(themock.hasNext());

关于java - 模拟总是抛出异常,除非是特定方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21027392/

10-08 23:25