在Spring中模拟@InjectMocks的方法

时间:2018-12-13 18:35:04

标签: java spring-boot mockito

我面临以下问题。我想模拟一个在我要测试的类中的方法。考虑以下示例。

ExampleClass(){
    method1DependsOnMethod2(){
        // some code

        method2(){
            // some code

        }
    }
}

现在我想测试依赖于method2的method1DependsOnMethod2,但我想模拟method2的结果以仅测试method1DependsOnMethod2。

我尝试了以下

@InjectMocks
@Spy
ExampleClass exampleClass

when(exampleClass.method2()).thenReturn()

doReturn(..).when(exampleClassmethod()).method2()

我还尝试使用两个实例

@InjectMocks
ExampleClass exampleClass
@Mock
ExampleClass exampleClassMock

但没有一种方法能达到理想的效果。

感谢您的帮助

马蒂亚斯问候

1 个答案:

答案 0 :(得分:1)

正如Dawood ibn Kareem所说,它与@Spy一起使用。

我必须删除@InjectMocks批注(如WildDev所述),否则似乎“注入版本”想要初始化所调用方法中的所有内容,并且不能正确地模拟它。

此外,我必须使用

doReturn(bla).when(exampleClass).method1DependsOnMethod2(); 

我尝试过

when(exampleClass.method1DependsOnMethod2()).thenReturn(bla); 

但是这也不起作用。

感谢Dawood ibn Kareem和WildDev的帮助。

马蒂亚斯问候