当前位置: 首页 > 面试题库 >

调用未存根方法时抛出RuntimeException

景辰钊
2023-03-14
问题内容

我正在使用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" );
    }

}

请注意,您 不能
使用when此功能,因为该方法是在方法调用之前when(嘲笑when()调用如何工作的?),并且它将RuntimeException在模拟进入存根模式之前抛出a 。

因此,您必须使用doReturn它来工作。



 类似资料:
  • 我试图创建一个方法,它接受两个字符串参数,并对对象调用一个方法调用。这两个参数将提供className和methodName。理想情况下,我希望使用反射找到对象和方法,然后调用该方法。这是我管理的一个自动化套件。 当我运行它时,我收到一个错误nosuchMethodException:java.lang.String.isPageDisplayed()。 我相信我的问题存在于寻找对象或与对象有关的

  • 为什么mockito打电话为存根方法。 为什么它使一个实际调用func下当... then返回我已经检查了当做调试。

  • 问题内容: 编辑:到目前为止,所有建议的答案都没有奏效。 我正在用Django运行此呼叫。服务器第一次运行时,将返回“ n_usr”(这将更改用户文件的形式)。第二次,它只是抛出一个错误。 问题答案: 在中,您具有: 然后您有: 你得到,因为jQuery是试图序列为jQuery对象,而且它不能。它可能正在尝试调用字符串方法,并将其作为上下文传递给jQuery对象,从而导致错误。 您需要添加。

  • 我使用web上的各种解决方案尝试了这个解决方案,但无法找到代码中的错误。我需要为静态方法调用存根,因为我需要它用于遗留代码。如何使用PowerMockito模拟静态方法?

  • 我在一个名为seedrecord的对象和一个名为FielliateLink的对象之间有一个manytomany关系。为了删除FielliateLink,我需要首先从每个SeedRecord的FielliateList中删除对它的引用。之后,我使用spring JParepository的delete方法删除对象。因为我的服务(FiniliateLinkService)中有不同的删除方法,所以我决定

  • 我在layout/XML中创建了一个自定义组件,它有两个文本视图和两个按钮。在它的支持类中,我只是让按钮递增和递减其中一个TextView的值 接下来,我创建了另一个包含5或6个复合组件的XML布局 在此布局的支持类(扩展活动)中,我设置了复合组件变量setContentView(),并尝试以下操作: 我收到一个错误声明-无法启动活动组件信息)。我只有在调用setLabel()时才会出现此错误。