2012-08-30 54 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队列。 –