所以我理解在Mockito @InjectMocks中会注入@Mock的注释,但是如何处理这种情况呢?
@Mock
private MockObject1 mockObject1;
@Mock
private MockObject2 mockObject2;
@InjectMocks
private SystemUnderTest systemUnderTest = new SystemUnderTest();
Run Code Online (Sandbox Code Playgroud)
想象一下,MockObject2的属性类型为MockObject1,而SystemUnderTest的属性类型为MockObject2.我想将mockObject1注入mockObject2,并将mockObject2注入systemUnderTest.
这可能带注释吗?
Col*_*ers 25
由于我在这里没有得到任何回复,我在Mockito论坛上提出了问题.以下是讨论的链接:https://groups.google.com/d/topic/mockito/hWwcI5UHFi0/discussion
总结一下这些答案,从技术上来说,这会破坏嘲弄的目的.您应该只模拟SystemUnderTest类所需的对象.在自己模拟的对象中嘲弄东西是没有意义的.
如果你真的想这样做,@ spy可以提供帮助
Mat*_*ttC 18
将@Spy与@InjectMocks结合起来是可能的.对于你的例子,它将是:
@Spy
private MockObject1 mockObject1 = new MockObject1 ();
@Spy @InjectMocks //if MockObject2 has a MockObject1, then it will be injected here.
private MockObject2 mockObject2 = new MockObject2 ();
@InjectMocks
private SystemUnderTest systemUnderTest;
Run Code Online (Sandbox Code Playgroud)
我发现的其他解决方案是使用Java sintax代替注解以注入@Spy对象。
@Spy
private MockObject1 mockObject1 = new MockObject1 ();
@InjectMocks //if MockObject2 has a MockObject1, then it will be injected here.
private MockObject2 mockObject2 = spy(MockObject2.class);
@InjectMocks
private SystemUnderTest systemUnderTest;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27721 次 |
| 最近记录: |