当前位置: 首页 > 知识库问答 >
问题:

如何模拟返回模拟对象的方法

阮健
2023-03-14

如何模拟返回已强制转换的模拟对象的方法。

    public void anyMethod() {       

    // code omitted

    ( (SomeClass) getApplicationContext().getBean("SomeClass") ).someMethod(anArgument);

    // ...
}

试验方法。

@Test
public void testAnyMethod() {

    // ...

    SomeClass mockSomeClass = mock(SomeClass.class);
    when(mockSomeClass.someMethod(anArgument)).thenReturn(someResult);

    ApplicationContext mockApplicationContext = mock(ApplicationContext.class);
    when(mockApplicationContext.getBean("SomeClass")).thenReturn(mockSomeClass);

    PowerMockito.doReturn(mockApplicationContext).when(GetContext.class, "getApplicationContext");

    // ...
}

共有1个答案

严升
2023-03-14

如果稍微更改方法实现以使用类型安全方法:

public void anyMethod() {       

    // code omitted

    getApplicationContext().getBean("SomeClass", SomeClass.class).someMethod(anArgument);

    // ...
}

然后您的测试类只会稍微更改为:

@Test
public void testAnyMethod() {

    // ...

    SomeClass mockSomeClass = mock(SomeClass.class);
    when(mockSomeClass).someMethod(anArgument).thenReturn(someResult);

    // The problem is that .getBean("SomeClass") returns Object.class which is then cast
    // to SomeClass in anyMethod. If I return an Object then someMethod(anArgument) dosent exist

    ApplicationContext mockApplicationContext = mock(ApplicationContext.class);
    when(mockApplicationContext.getBean("SomeClass", SomeClass.class)).thenReturn(mockSomeClass);

    // ...
}
 类似资料:
  • 调试时,在带有的行中弹出一个NullPointerException,类为。

  • 问题内容: 我正在为我的应用程序编写单元测试,我想知道Mockito框架是否有可能影响传递到返回无效类的方法中的对象。例如,调用一个包含方法的模拟验证类,该方法返回void,但通过作为参数传入的对象来跟踪各种更改和元数据。。 我为其他测试模拟了验证器类,但是对于这个测试,我需要模拟对不知道怎么做的cartItemsFilter对象的更改。 问题答案: 答案是肯定的,您可以,并且根据测试的需要,基本

  • 所以我想做一些事情 但我得到了空异常

  • 我有一个类。并且我已经编写了一个类的单元测试方法的类。我的代码如下:- 在我的单元测试课上,我编写了以下方法。 当我执行测试类,我得到错误。这是因为在类中,在方法的第8行中,学生机构映射字段为null。这只发生在模拟对象上。如何获得模拟对象的自动生成字段?

  • 问题内容: 我想从包含2个静态方法m1和m2的类中模拟静态方法m1。我希望方法m1返回一个对象。 我尝试了以下 1) 这将同时调用m1和m2,它们具有不同的返回类型,因此会给出返回类型不匹配错误。 2) 但是,执行m1时不会调用此方法。 3) 给出了我不能从http://code.google.com/p/powermock/wiki/MockitoUsage获得的,无法提供模拟部分的编译器错误。

  • 我想从一个包含两个静态方法m1和M2的类中模拟一个静态方法m1。并且我希望方法m1返回一个对象。 我尝试了以下操作 2)但在执行m1时不调用它。