调用未存根方法时抛出RuntimeException [英] Throw a RuntimeException when invoking an unstubbed method
本文介绍了调用未存根方法时抛出RuntimeException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Mockito.我想在调用未存根方法时抛出RuntimeException
.
I'm using Mockito. I want to throw a RuntimeException
when an unstubbed method is called.
有什么办法吗?
推荐答案
您可以为模拟设置默认答案.所有未存根的方法都将使用此默认答案.
You can set a default answer for a mock. All methods that aren't stubbed will use this default answer.
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" );
}
}
请注意,您不能将此功能用于when
,因为该方法是在when
之前调用的(
Note that you cannot use when
with this functionality, since the method is called before when
(How does mockito when() invocation work?) and it will throw a RuntimeException
before the mock goes into stubbing mode.
因此,必须使用doReturn
才能起作用.
Therefore, you must use doReturn
for this to work.
这篇关于调用未存根方法时抛出RuntimeException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文