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);
}
テストクラス:Beanを@Autowires
。
MockitoがTestConfigでモックを作成しているときに、マップフィールドが初期化されて例外がスローされる前に呼び出されるように見える@PostConstructを呼び出します。
私の質問は:
- なぜMockitoは@PostConstructを呼ぶのでしょうか?
- mockingのために@PostConstructを無効にするにはどうすればよいですか?
EDIT:どうやらコールがインスタンス化の後に行われる春はコンフィグの@BeanメソッドからBeanをretrns直前
あなたが右のように見えます。それは春です!しかし、これは '@Configuration'の' @Bean'メソッドでインスタンスが返された後に呼び出されます。どうすれば無効にできますか? – Whimusical
私はあなたができると思うdonot。複数のコンポーネントの統合テストを書いているのでなければ、単体テスト用のモックを使う方が良いでしょう。 – john16384