我們有一個使用路由器和表達式的彈簧集成路由。該表達式在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>
但似乎我的overrided不影響行爲價值......它似乎一旦Spring讀取的背景下,改變屬性組件不會影響其行爲。
Oki,它是一個構造函數arg,但是爲什麼還有一個叫做setPrimaryExpression的增變器? – JonathanVila
關於TestPropertySource是一個類級別的註釋,所以爲了測試true和false值,我需要創建2個測試類而不是2個方法。所以,儘管我可以在方法級別放置DirtiesContext,但我無法在方法級別設置任何重寫屬性的東西? – JonathanVila
在我的答案中查看更新。 –