我面临以下问题。我想模拟一个在我要测试的类中的方法。考虑以下示例。
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
但没有一种方法能达到理想的效果。
感谢您的帮助
马蒂亚斯问候
答案 0 :(得分:1)
正如Dawood ibn Kareem所说,它与@Spy一起使用。
我必须删除@InjectMocks批注(如WildDev所述),否则似乎“注入版本”想要初始化所调用方法中的所有内容,并且不能正确地模拟它。
此外,我必须使用
doReturn(bla).when(exampleClass).method1DependsOnMethod2();
我尝试过
when(exampleClass.method1DependsOnMethod2()).thenReturn(bla);
但是这也不起作用。
感谢Dawood ibn Kareem和WildDev的帮助。
马蒂亚斯问候