我有一个带驼峰的春季启动应用程序。 我有一个java定义的路由。我正在使用选择器。
from("jms:Q1?selector=fruit='apple'").process(appleProcessor);
from("jms:Q1?selector=fruit='orange'").process(orangeProcessor);
我想编写一个测试用例,我需要验证选择器是否正常工作以及是否调用了正确的处理器。
那么如何模拟处理器。是否像嘲弄端点。
或者就像模拟一个对象(appleProcessor,在上下文配置类中定义它的bean)并通过以下方式验证:
Mockito.verify(appleProcessor, VerificationModeFactory.times(1)).process(Mockito.any());
在我的测试用例中,我使用ProducerTemplate发送msg,我的路由正在被正确调用。
请帮忙。
答案 0 :(得分:0)
我不完全明白你想要实现的目标。 JMS选择器将正常工作,这是(或应该)由Camel的单元测试和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:
个端点并声明它们已收到预期的消息计数。
当然,对每个处理器进行单元测试是另一项测试。