所以我知道在Mockito中,@InjectMocks
会注入任何它可以用@Mock
注解的东西,但是如何处理这种情况呢?
@Mock
private MockObject1 mockObject1;
@Mock
private MockObject2 mockObject2;
@InjectMocks
private SystemUnderTest systemUnderTest = new SystemUnderTest();
假设MockObject2
有一个MockObject1
类型的属性,SystemUnderTest
有一个MockObject2
类型的属性。我希望将mockObject1
注入到mockObject2
,并将mockObject2
注入到systemUnderTest
。
这是可能的注解吗?
5条答案
按热度按时间uxhixvfz1#
因为我在这里没有得到任何回应,我在Mockito论坛上问。下面是讨论的链接:https://groups.google.com/d/topic/mockito/hWwcI5UHFi0/discussion
总结一下答案,从技术上讲,这有点违背了嘲笑的目的。您实际上应该只模拟
SystemUnderTest
类所需的对象。在对象本身就是被模仿的对象中模仿的东西是毫无意义的。如果你真的想这样做,
@Spy
可以帮助你。cwtwac6a2#
可以通过组合@Spy和@InjectMocks来实现。对于您的示例,它将是:
3ks5zfa03#
我发现的另一个解决方案是使用java sintax代替注解来注入@Spy对象。
6tr1vspr4#
这对我很有效:
a8jjtwal5#
以下是我的解决方案: