下面是演示問題的代碼。Class3 具有自動裝配欄位 Class2,Class2 具有 Class1 的自動裝配依賴項,simpleTest 使用 Class3 獲取 Class1 的 String 值。所以在測驗執行中,Class2 不為空并被注入到 Class3 中,但 Class1 在 Class2 中為空。
@Component
class Class1{
private String str= "Some String";
//getter setter
}
@Component
class Class2{
@Autowired
Class1 class1;
//getter setter
}
@Component
class Class3{
@Autowired
Class2 class2;
//getter setter
}
public class TestClass{
@InjectMocks
Class3 class3;
@Spy
Class2 class2;
@Spy
Class1 class2;
@Test
public void simpleTest(){
String s = class3.class2.class1.getStr();
Assert.equals(s,"Some String");
}
}
uj5u.com熱心網友回復:
那是因為@Spy您在 Class2 上放置了注釋,它使 Class2 成為模擬而不是有效的 Spring bean。
如果你想在這里得到 Spring 的 DI,你必須把你的 bean 放在@Autowired可能的地方
@RunWith(SpringRunner.class)
@SpringBootTest
在您的測驗中使其使用實際背景關系。
uj5u.com熱心網友回復:
下面解決了這個問題。
@InjectMocks
@Spy
Class2 class2;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/400845.html
上一篇:為什么HttpServletResponse沒有回應正文的簡單字串?
下一篇:matlab如何讀取多個文本檔案
