2017-05-25 173 views
0

我有一個駱駝的春季啓動應用程序。 我有一個java定義的路線。我在那裏使用選擇器。阿帕奇駱駝測試路線

from("jms:Q1?selector=fruit='apple'").process(appleProcessor); 
from("jms:Q1?selector=fruit='orange'").process(orangeProcessor); 

我想寫一個測試用例,我需要驗證選擇器是否正常工作以及是否調用了正確的處理器。

那麼如何模擬處理器。它是否像嘲笑端點?

或者是像嘲諷的對象(appleProcessor,定義其豆在上下文配置類),並通過驗證:

Mockito.verify(appleProcessor, VerificationModeFactory.times(1)).process(Mockito.any()); 

在我的測試情況下,我使用ProducerTemplate發送味精,和我路由正在被調用。

請幫忙。

回答

0

我不完全理解你想達到的目標。 JMS選擇器正常工作,這是(或應該)由駱駝的單元測試和Spring JMS單元測試保證。

如果要確保選擇器正常工作,則應創建一個集成測試,在隊列中發佈一些消息,檢查隊列的處理器。我不認爲它會增加任何價值。相反,如果你想測試一個'apple'消息去appleProcessor,這是你的代碼的單元測試。使用ProducerTemplate的方法很好。我認爲問題在於你的處理器是鏈中的最後一步。你可以重構你的路線:

from("jms:Q1?selector=fruit='apple'").to("direct:processApple"); 
from("direct:processApple").process(appleProcessor); 

from("jms:Q1?selector=fruit='orange'").to("direct:processOrange") 
from("direct:processOrange").process(orangeProcessor); 

現在你可以嘲笑direct:端點和斷言,他們收到了預期的消息計數。

當然,單元測試每個處理器是另一個測試。