调用未存根方法时抛出RuntimeException [英] Throw a RuntimeException when invoking an unstubbed method

查看:100
本文介绍了调用未存根方法时抛出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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆