在调用未存根的方法时引发运行时异常
我正在使用Mockito。我想在调用未存根方法时抛出一个。RuntimeException
有什么办法可以做到这一点吗?
我正在使用Mockito。我想在调用未存根方法时抛出一个。RuntimeException
有什么办法可以做到这一点吗?
您可以为模拟设置默认答案。所有未存根的方法都将使用此默认答案。
public void testUnstubbedException() {
// Create a mock with all methods throwing a RuntimeException by default
SomeClass someClass = mock( SomeClass .class, new RuntimeExceptionAnswer() );
doReturn(1).when(someClass).getId(); // Must use doReturn
int id = someClass.getId(); // Will return 1
someClass.unstubbedMethod(); // Will throw RuntimeException
}
public static class RuntimeExceptionAnswer implements Answer<Object> {
public Object answer( InvocationOnMock invocation ) throws Throwable {
throw new RuntimeException ( invocation.getMethod().getName() + " is not stubbed" );
}
}
请注意,您不能使用此功能,因为该方法之前被调用(当()调用时,mockito如何工作?),并且在模拟进入存根模式之前,它将抛出一个。when
when
RuntimeException
因此,您必须使用它才能正常工作。doReturn
执行此操作的最佳方法是使用 和 静态方法。在测试的“行为”部分之后调用这些;如果调用了任何未存根的方法但未验证,您将失败。verifyNoMoreInteractions
ignoreStubs
verifyNoMoreInteractions(ignoreStubs(myMock));
这在 https://static.javadoc.io/org.mockito/mockito-core/2.8.47/org/mockito/Mockito.html#ignore_stubs_verification 中进行了描述,尽管我相信那里的代码示例当前包含印刷错误。