Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java mocking总是抛出异常,但在特定方法上除外_Java_Unit Testing_Mockito - Fatal编程技术网

Java mocking总是抛出异常,但在特定方法上除外

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

我如何用Mockito创建一个mock,除了一些存根调用之外,它在每个方法调用上都抛出一个异常?直观地说,我通过提供如下默认答案进行了尝试:

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());