ロードされたSpringContextでSpring Beanをプログラムで置き換えることはできますか

私は統合テストを書こうと思っていますが、一つのマイナーな制限があります。私はモックアウトしたいTimeSourceBeanを得ました。このTimeSourceBeanは、アプリケーションの深さ数倍で使用されます。 (反射でこれを行う方法はありません)

すべてはオートワイヤーによって行われます。

私は私のテストで、私が持っているような実装で追加のXMLをロードできると思います。 ここを参照してください。

しかし、本当にうまくいくのは、テスト自体にmock TimeSourceBeanを作成し、それを登録する(元のbeanを置き換える)ことができるときです

=> so before I start the test, I create the mock and register my bean like this:

context.registerBean(timeSourceBeanMockVersion);

これが可能ならばどんな考えですか?

2

1 答え

同じインターフェースを実装している他のBean /クラス(うまくいけばそれを使用する)を追加して、この他のBeanクラスを@Primaryとしてマークすることができます。

しかし、このプライマリBeanが必要なテストケースにロードされていることを確認する必要があります。

0
追加された