Java 为什么模拟类不进入非模拟函数?
我有一门课:Java 为什么模拟类不进入非模拟函数?,java,unit-testing,spring-boot,mockito,Java,Unit Testing,Spring Boot,Mockito,我有一门课: @Component public class GCInitializer { @Autowired GCGoodRepository gcGoodRepository; @PostConstruct public void onStartup() throws Exception { // load/update base data initGCBaseData(); } private
@Component
public class GCInitializer
{
@Autowired
GCGoodRepository gcGoodRepository;
@PostConstruct
public void onStartup() throws Exception
{
// load/update base data
initGCBaseData();
}
private void initGCBaseData() throws Exception
{
ArrayList<GCGood> dbGoods;
ArrayList<GCGood> fileGoods;
ArrayList<GCGood> baseGoods;
dbGoods = getGCGoodsFromDB();
fileGoods = getGoodsFromFile();
baseGoods = getGoodsFromInitializer();
// do my merge magic
[…]
}
private ArrayList<GCGood> getGoodsFromInitializer() {
ArrayList<GCGood> baseGoods = new ArrayList<>();
[…]
}
[…]
}
使用调试器运行函数GCInitializer::getGoodsFromInitializer时,永远不会输入并返回null,而不是带有7个GCGoods的数组
为什么会这样?如何实现此函数返回正确的ArrayList?它是一个模拟函数,因此没有实现真正的方法。你可能想用间谍来代替。我同意备忘录,但如果你想这样做,你可以使用真实的部分模拟,例如:
when(mock.someMethod()).thenCallRealMethod();
when(mock.someMethod()).thenCallRealMethod();