该应用程序运行在JEE环境中。
我希望将 Spy 注入到被测试的 bean 中。
Spy 对象内部还有一些需要注入的 bean。如何将这些 bean 的模拟注入到 Spy 中?
这是用例:
package testinject2;
import javax.inject.Inject;
public class ABean {
@Inject
BBean b;
public void print() {
System.out.println("Hi, I'm ABean");
b.print();
}
}
package testinject2;
import javax.inject.Inject;
public class BBean {
@Inject
CBean c;
public void print() {
System.out.println("Hi, I'm BBean");
c.print();
}
}
package testinject2;
public class CBean {
public void print() {
System.out.println("Hi, I'm CBean");
}
}
package testinject2;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Spy;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class ABeanTest {
@Spy
CBean c = new CBean();
@Spy
BBean b = new BBean();
@InjectMocks
ABean beanUnderTest;
@Test
public void test() {
beanUnderTest.print();
}
}
我期望获得
Hi, I'm ABean
Hi, I'm BBean
Hi, I'm CBean
但相反,我有一个空指针异常,因为 Bean 没有注入到 Bean 中。
将 Spy 对象注入另一个 Spy 的正确方法是什么?