Han*_*örr 2 java unit-testing mockito
如何使用 Mockito 创建一个模拟,该模拟在除某些存根调用之外的每个方法调用上都会引发异常?直觉上,我通过提供如下默认答案进行了尝试:
Iterator themock = mock(Iterator.class,
new ThrowsExceptionClass(UnsupportedOperationException.class));
when(themock.hasNext()).thenReturn(false);
assertFalse(themock.hasNext());
Run Code Online (Sandbox Code Playgroud)
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());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1554 次 |
| 最近记录: |