我正在尝试模拟 Spring Beans。我能够模拟对象 B 和 C。但是我无法模拟 B 类中的对象。 插入类 A 的模拟包含 B 。但是 X 和 Y 为空,即使我 mock 了它们。 Mockito 中有什么方法可以模拟 Spring bean 中成员的对象。
@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 将是 spy 对象,因此您可以根据需要在其上模拟方法结果。或者,您可以将真实的 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);
}
}
关于java - 如何在 mockito 中模拟 Spring 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34497046/