1

假设我有这两条路线

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

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

在实际上下文中,它们是 JMS 队列,这很好。但我想测试路由是否正确,所以我将 testContext.xml 中的 JMS 组件更改为:

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

我希望那些 inOnly 队列是模拟的,所以我可以测试它们的消息数量。问题是模拟队列不能用作第二条路由中的输入队列。我怎样才能解决这个问题?

4

2 回答 2

1

在使用 Camel 和 JMS 进行自动化集成 JUnit 测试时,我通常会嵌入一个 ActiveMQ 代理。

我还会考虑一个更简单的场景,您将“传出”作为seda端点。然后你只需要检查“完成”模拟端点的消息,你就知道整个路由是有效的。对于更复杂的路由场景,在 JUnit 测试中覆盖它需要一些思考,如果你应该这样做的话。

于 2012-08-30T19:57:02.107 回答
0

您可以使用存根组件而不是 JMS 等。它是引擎盖下的 seda/vm 队列,因此您可以从中发送和使用消息 http://camel.apache.org/stub

于 2012-08-31T11:17:11.273 回答