如何使用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/