1
我有一組像:Mockito + Spring + @PostConstruct,模擬初始化錯誤,爲什麼叫@PostConstruct?
豆類:
private final Map<String, String> configCache = new HashMap<>();
@PostConstruct
private void fillCache() { (...) configCache.clear();}
TestConfig類:
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
@Primary
public Bean beanMock() {
return Mockito.mock(Bean.class);
}
測試類:其中@Autowires
豆。
當Mockito在TestConfig中創建模擬器時,它似乎調用@PostConstruct,而這個@PostConstruct在映射字段初始化之前似乎被調用,因此它會引發異常。
我的問題是:
- 爲什麼打電話的Mockito @PostConstruct?
- 如何禁用@PostConstruct進行模擬?
編輯:顯然呼叫實例化後進行春季從配置的@Bean方法
你似乎是正確的。春天了!!但是它在'@ Configuration'的'@ Bean'方法中返回實例後調用。我該如何禁用它? – Whimusical
我不認爲你可以。除非你正在爲多個組件編寫集成測試,否則最好使用mock進行單元測試。 – john16384