-1
所以我有一个简单的Java类:的Mockito:注射模拟类没有注入其他类
@Component
public class IWantToTestThisClass {
@Autowired
private ClassA classA;
@Autowired
private ClassB classB;
public ObjectA doIt(...) {
classB.returnObject();
}
ClassA的包含:
@Component
public class ClassA {
@Autowired
private ClassB classB;
public ObjectA doIt() {
classB.returnObject(...);
}
ClassB的:
@Component
public class ClassB {
public ObjectA returnObject(...) {
...
}
我的测试设置看起来像这样:
@InjectMocks
private IWantToTestThisClass iWantToTestThisClass;
@Mock
private ClassA classA;
@Mock
private ClassB classB;
@Before
public void setUp() {
initMocks(this);
when(classA.doSmt()).thenCallRealMethod();
when(classB.doSmt()).thenCallRealMethod();
}
问题是ClassB不是针对ClassA注入的。
然后returnObject(ClassB)通过classA调用,它返回NullPointerException(ClassB未被模拟/注入)。
如果returnObject(classB)通过IWantToTestThisClass被调用,那没问题。
这是一种为两个类同时注入ClassB的方法吗?我想调用真正的方法,而不是嘲弄的方法。
请提供[MCVE。 –
我知道这是NullPointerException,为什么我得到它。 :) – Laurynas
你能不能更新你的完整测试课 – kuhajeyan