式を持つルータを使用するSpring統合ルートがあります。この式はymlファイルで設定されます。 このルータ属性の値を手作業で設定して単体テストを作成したいのですが、動作していないようです。スプリング統合ルータ属性をプログラムで設定する
テスト
@Autowired
EventDrivenConsumer myrouter;
.....
((ExpressionEvaluatingRouter) myrouter.getHandler()).setPrimaryExpression(new SpelExpressionParser().doParseExpression("true"));
XMLコンテキストの一部
<int:router input-channel="catchweightExcluderChannel" expression="${rip.config.exclude_catchweight}" default-output-channel="productTransformerChannel">
<int:mapping value="true" channel="catchWeightFilteringChannel" />
<int:mapping value="false" channel="productTransformerChannel" />
</int:router>
しかし、の属性を変更し、春にはコンテキストを読み込み、一度としてそれはそう...オーバーライド私の値は動作に影響を与えるされていないようですコンポーネントはその動作に影響を与えません。
沖井、それはコンストラクタargですが、なぜsetPrimaryExpressionというミューテータが存在しますか? – JonathanVila
TestPropertySourceについては、クラスレベルの注釈なので、真値と偽値の両方をテストするには、2つのメソッドの代わりに2つのテストクラスを作成する必要があります。したがって、メソッドレベルでDirtiesContextを配置することはできますが、メソッドレベルでプロパティをオーバーライドすることはできません。 – JonathanVila
私の答えでUPDATEを見てください。 –