0
有沒有人知道爲什麼在這個例子中,當運行「ATest」時,我得到一行null「return b.getBAutoWiredObject()。getString();」autowired字段的模擬在單元測試中爲null
任何有關這方面的意見將不勝感激。
@RunWith(MockitoJUnitRunner.class)
public class ATest {
@Mock
private A a;
@Test
public void testMethod() {
String testedString = a.method();
assertEquals("blah", testedString);
}
}
@Service("A")
public class A {
public String method() {
B b = new B();
return b.getBAutoWiredObject().getString();
}
}
@Component
public class B {
@Autowired
@Qualifier("Bautowire")
private BAutoWiredObject bAutoWiredObject;
public BAutoWiredObject getBAutoWiredObject() {
return bAutoWiredObject;
}
}
@Service("Bautowire")
public class BAutoWiredObject {
private String string = new String("blah");
public void getString() {
return string;
}
}
是的,你是對的,斷言線是不正確的,我沒有關注,因爲它不是我的問題的重點。 那麼,爲了讓我的模擬「A」對象能夠沿着層次結構並從「BAutoWiredObject」中獲取字符串,我需要做些什麼? – MacAttack
@MacAttack你不會。如果你正在測試'A',你不應該嘲笑它。如果你正在做一些集成測試和嘲諷'A',那麼運行A代碼並不重要,你應該設置期望值。 –
這可以用一個when()來解決嗎?即。我在我的測試類中添加了B作爲模擬對象,然後在(B.getBAutoWiredObject()。getString())時返回。 – MacAttack