使用 MockEndpoint 测试 Camel
2022-09-02 13:55:49
我有一系列“流水线”组件,它们都通过ActiveMQ消息队列进行通信。每个组件都使用 Camel 将其中每个队列视为终结点。每个组件都使用相同的基本模式:
其中,每个组件使用输入队列中的消息,处理消息,然后将 1 条以上消息放在出站/输出队列中。然后,“输出”队列成为链中下一个组件的“输入”队列。很基本。
我现在正试图卷起袖子,使用Camel的测试API为每个组件提供单元测试。我一直在翻阅Javadocs和Camel网站上的几个例子,但是很难连接所有点。MockEndpoints
在我看来,对于每个组件,我的单元测试的一部分都希望完成以下三件事:
- 测试以查看是否有消息在特定的“输入”队列上等待
- 下拉并处理这些消息
- 将新消息推送到“输出”队列,并验证它们是否在那里
我相信我需要为每个队列创建,如下所示:MockEndpoints
@EndpointInject(uri = "mock:inputQueue")
protected MockEndpoint intputQueue;
@EndpointInject(uri = "mock:outputQueue")
protected MockEndpoint outputQueue;
因此,现在,在我的 JUnit 测试方法中,我可以设置期望并与这些端点进行交互:
@Test
public final void processMethodShouldSendToOutputQueue()
{
Component comp = new Component();
comp.process();
outputQueue.assertIsSatisfied();
}
我只是不明白如何正确地连接一切:
- 如何连接到 和 MockEndpoints?
comp
inputQueue
outputQueue
- 对于每个 ,如何设置期望,以便检查消息是否存在于特定队列中,或者特定队列是否包含消息?
MockEndpoint
assertIsSatisfied()