Java mocking总是抛出异常,但在特定方法上除外
我如何用Mockito创建一个mock,除了一些存根调用之外,它在每个方法调用上都抛出一个异常?直观地说,我通过提供如下默认答案进行了尝试:Java mocking总是抛出异常,但在特定方法上除外,java,unit-testing,mockito,Java,Unit Testing,Mockito,我如何用Mockito创建一个mock,除了一些存根调用之外,它在每个方法调用上都抛出一个异常?直观地说,我通过提供如下默认答案进行了尝试: Iterator themock = mock(Iterator.class, new ThrowsExceptionClass(UnsupportedOperationException.class)); when(themock.hasNext()).thenReturn(false); assertFalse(themock.hasNext
Iterator themock = mock(Iterator.class,
new ThrowsExceptionClass(UnsupportedOperationException.class));
when(themock.hasNext()).thenReturn(false);
assertFalse(themock.hasNext());
但是第二行中的调用
themock.hasNext()
已经抛出了一个UnsupportedOperationException
Mockito无法知道第二行中的调用themock.hasNext()是在存根期间,因为对when的实际调用是在该调用完成之后完成的。如果您使用用于模拟,它确实知道这一点,并且不应用默认答案:
Iterator themock = mock(Iterator.class,
new ThrowsExceptionClass(UnsupportedOperationException.class));
doReturn(false).when(themock).hasNext();
assertFalse(themock.hasNext());
Mockito无法知道第二行中的调用themock.hasNext()是在存根期间进行的,因为对when的实际调用是在该调用完成后完成的。如果您使用用于模拟,它确实知道这一点,并且不应用默认答案:
Iterator themock = mock(Iterator.class,
new ThrowsExceptionClass(UnsupportedOperationException.class));
doReturn(false).when(themock).hasNext();
assertFalse(themock.hasNext());