我正在尝试模拟Spring Beans.我能够模拟对象B和C.但是无法模拟类B中的对象.
插入类A的模拟包含B.但是即使我嘲笑了它们,X和Y还是null. Mockito中有什么方法可以模拟Spring bean中member成员的Objects.
@Named
@Scope(value = "prototype")
public class A {
@Inject
private B b;
@Inject
private C c;
}
@Named
@Scope(value = "prototype")
public class B {
@Inject
private X x;
@Inject
private Y y;
}
我需要在其中填充类A的所有依赖项的测试类.
@RunWith(MockitoJUnitRunner.class)
public class ATest {
@InjectMocks
A a = new A();
@Mock
private B b;
@Mock
private C c;
@Mock
private X x;
@Mock
private Y y;
}
解决方法:
您可以下一步.在这种情况下,B将成为间谍对象,因此您可以根据需要模拟方法结果.或者,您可以将真实的B方法与模拟的X和Y方法一起使用.
@RunWith(MockitoJUnitRunner.class)
public class ATest {
@Mock
private X x;
@Mock
private Y y;
@Spy
@InjectMocks
private B b;
@Mock
private C c;
@InjectMocks
A a;
@Before
public void setUp() {
MockitoAnnotations.initMock(this);
}
}