2
我是春季整合新手。我需要爲整數圖編寫單元測試。該圖從網關 - >分離器 - >濃縮器 - >聚合器 - >變壓器開始。所以如果我想單獨爲豐富者編寫一個單元測試,我該如何去做。如何在春季集成中進行單元測試?
我提到this文章,但他們都只有一個組件。但是,在這種情況下如何做到這一點。
我是春季整合新手。我需要爲整數圖編寫單元測試。該圖從網關 - >分離器 - >濃縮器 - >聚合器 - >變壓器開始。所以如果我想單獨爲豐富者編寫一個單元測試,我該如何去做。如何在春季集成中進行單元測試?
我提到this文章,但他們都只有一個組件。但是,在這種情況下如何做到這一點。
目前尚不清楚爲什麼您引用的答案引用的測試樣本不能幫助您。流程中有什麼並不重要;其基本思想是將一條消息發送到流程的開始,並檢查流程結束後的結果,也許通過用一個隊列通道替換最後一個通道,您可以從您的測試案例中輪詢。
你可以stop()
最終消費者,所以他不抓住結果。
編輯:(迴應下面的評論)。
可以搶佔組件的輸出通道......
...
<int:channel id="toHE"/>
<int:header-enricher id="he" input-channel="toHE" output-channel="fromHE">
<int:header name="foo" value="bar"/>
</int:header-enricher>
<int:channel id="fromHE"/>
...
然後......
@Autowired
private MessageChannel toHE;
@Autowired
@Qualifier("he.handler")
private MessageTransformingHandler headerEnricher;
@Test
@DirtiesContext
public void testEnricher() {
PollableChannel outputChannel = new QueueChannel();
headerEnricher.setOutputChannel(outputChannel);
toHE.send(MessageBuilder.withPayload("baz").build());
Message<?> out = outputChannel.receive(10000);
assertNotNull(out);
assertEquals("bar", out.getHeaders().get("foo"));
}
如果我想測試富集獨自一人,我已經把消息發送到通道和輸出自動流向聚合器在我的例子中,如何重新路由和檢查..? – Manoj
請參閱已編輯的答案。 –
謝謝..那麼testEnricher()將確保消息不會從HE中進入通道,而是轉到testEnricher中定義的輸出通道? ...流量會停止嗎? – Manoj