-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