Mockito-ing总是抛出异常,除了特定的方法

时间:2014-01-09 17:43:15

标签: java unit-testing mockito

如何使用Mockito创建一个模拟,它会在每个方法调用上抛出异常,除了一些存根调用?直觉上,我通过提供这样的默认答案来尝试它:

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

但第二行中的调用themock.hasNext()已经抛出UnsupportedOperationException

1 个答案:

答案 0 :(得分:4)

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

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