我有一系列经过“流水线化”处理的组件,它们都通过ActiveMQ消息队列进行通信。每个组件使用Camel将这些队列视为端点(Endpoint)。每个组件都使用相同的基本模式:
我现在正在尝试卷起袖子,使用Camel的测试API提供的
MockEndpoints
为每个组件提供单元测试。我一直在查阅javadoc和Camel网站上的少数示例,但是很难将所有要点连接起来。对于每个组件,我认为我的单元测试的一部分将想要完成以下三件事:
- 测试是否有消息等待在特定的"输入"队列上 - 获取这些消息并处理它们 - 将新消息推送到"输出"队列并验证它们是否已到达那里
我相信我需要创建每个队列的
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();
}
我只是不理解如何正确地连接所有内容:
- 我该如何将
comp
连接到inputQueue
和outputQueue
MockEndpoints? - 对于每个
MockEndpoint
,我该如何设置期望,以便assertIsSatisfied()
检查特定队列中是否存在消息,或者特定队列是否包含消息?