2012-08-30 53 views
1

假設我有這兩條路線的JUnit + Apache的駱駝

<camelContext> 
    <route> 
     <from ref="incoming" /> 
     <!-- some processors --> 
     <inOnly ref="outgoing" /> 
    </route> 

    <route> 
     <from ref="outgoing" /> 
     <!-- some processors --> 
     <inOnly ref="finish" /> 
    </route> 
</camelContext> 

在現實背景下,他們是JMS隊列這是罰款。但是,我想測試路由是正確的,所以我改變JMS組件在testContext.xml到:

incoming -> direct 
outgoing -> mock 
finish -> mock 

我希望這些INONLY隊列是嘲笑,所以我可以測試他們的郵件數量。問題是模擬隊列不能在第二條路徑中作爲輸入隊列工作。我怎樣才能解決這個問題?

+0

感覺不像JUnit測試發送和接收消息,而更像一個集成測試給我。 – duffymo

+1

http://stackoverflow.com/questions/8579358/testing-camel-with-mockendpoints – calvinkrishy

回答

1

我通常是embedd一個ActiveMQ代理,當做自動化集成JUnit測試與駱駝和JMS。

我還會考慮一個更簡單的場景,您將「傳出」作爲seda端點。那麼你只需要檢查消息的「完成」模擬端點,並且你知道整個路由都可以工作。對於更復雜的路由場景,如果您應該這樣做,則需要在JUnit測試中進行一些思考。

+0

這不是一個集成測試。我只想在兩個地方查看郵件 - 在路線和最後。但是使用'mock:outgoing'不起作用(因爲某種原因它不能在''中)...... – user219882

+1

好吧,你真的想嘲笑中間的一個。這實際上在代碼和文本中描述如下:http://camel.apache.org/mock.html#Mock-Mockingexistingendpoints 使用「adviceWith」概念。我認爲這是描述除了直接而不是JMS隊列。 –