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