apache-camel - 骆驼路线测试 - 注册表:模拟:结果
问题描述
嗨,我有复杂的骆驼路线,在路线之间我使用 Bean 向 MQ 发送消息。
.bean("{{tp.mqservice}}")
应用程序.yaml
mqservice: bean:mqService
应用程序-test.yaml
mqservice: mock:result
下面是我的 PortfolioRouteTest
@ActiveProfiles("test")
@RunWith(CamelSpringBootRunner.class)
@SpringBootTest(classes = MainApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
@MockEndpoints
public class PortfolioTncRouteTest {
@EndpointInject(value = "{{trade-publisher.portfolio-tnc.source-endpoint}}")
private ProducerTemplate producerTemplate;
@EndpointInject(value = "{{trade-publisher.mqservice}}")
private MockEndpoint mock;
}
朱尼特
@Test
public void portfolioTncRouteTest() throws InterruptedException {
data = ...
Mockito.when(service.search(Mockito.any(....class))).thenReturn(...);
producerTemplate.sendBody(data);
mock.expectedMessageCount(1);
mock.assertIsSatisfied(30000);
}
但是,当我运行测试时,我遇到了错误。我错过了什么吗?
堆栈跟踪
Caused by: org.apache.camel.NoSuchBeanException: No bean could be found in the registry for: mock:result
at org.apache.camel.component.bean.RegistryBean.getBean(RegistryBean.java:92)
at org.apache.camel.component.bean.RegistryBean.createCacheHolder(RegistryBean.java:67)
at org.apache.camel.reifier.BeanReifier.createProcessor(BeanReifier.java:57)
at org.apache.camel.reifier.ProcessorReifier.createProcessor(ProcessorReifier.java:485)
at org.apache.camel.reifier.ProcessorReifier.createOutputsProcessorImpl(ProcessorReifier.java:448)
at org.apache.camel.reifier.ProcessorReifier.createOutputsProcessor(ProcessorReifier.java:415)
at org.apache.camel.reifier.ProcessorReifier.createOutputsProcessor(ProcessorReifier.java:212)
at org.apache.camel.reifier.ExpressionReifier.createFilterProcessor(ExpressionReifier.java:39)
at org.apache.camel.reifier.WhenReifier.createProcessor(WhenReifier.java:32)
at org.apache.camel.reifier.WhenReifier.createProcessor(WhenReifier.java:24)
at org.apache.camel.reifier.ProcessorReifier.createProcessor(ProcessorReifier.java:485)
at org.apache.camel.reifier.ChoiceReifier.createProcessor(ChoiceReifier.java:54)
at org.apache.camel.reifier.ProcessorReifier.createProcessor(ProcessorReifier.java:485)
at org.apache.camel.reifier.ProcessorReifier.createOutputsProcessorImpl(ProcessorReifier.java:448)
at org.apache.camel.reifier.ProcessorReifier.createOutputsProcessor(ProcessorReifier.java:415)
at org.apache.camel.reifier.TryReifier.createProcessor(TryReifier.java:38)
at org.apache.camel.reifier.ProcessorReifier.createProcessor(ProcessorReifier.java:485)
at org.apache.camel.reifier.ProcessorReifier.createOutputsProcessorImpl(ProcessorReifier.java:448)
at org.apache.camel.reifier.ProcessorReifier.createOutputsProcessor(ProcessorReifier.java:415)
at org.apache.camel.reifier.ProcessorReifier.createOutputsProcessor(ProcessorReifier.java:212)
at org.apache.camel.reifier.ProcessorReifier.createChildProcessor(ProcessorReifier.java:231)
at org.apache.camel.reifier.SplitReifier.createProcessor(SplitReifier.java:42)
at org.apache.camel.reifier.ProcessorReifier.makeProcessorImpl(ProcessorReifier.java:536)
at org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:497)
at org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:241)
at org.apache.camel.reifier.RouteReifier.addRoutes(RouteReifier.java:358)
... 56 more
解决方案
使用.to
而不是将.bean
其发送到 Camel 端点,然后您可以发送到模拟端点。当使用它时.bean
,它仅用于调用 POJO Java bean。
推荐阅读
- python - WinError 32 进程无法访问文件,因为它正在被另一个进程使用,无法通过python或手动删除文件
- c - GCC:从 .symtab 段中获取正确的函数地址
- java - JPQL 查询中 DTO 构造函数的问题
- css - 应用于两个相等 DIV 之一的 rotate() 不能完美对齐背景图像
- android - Aapt 添加库资源
- powershell - 当您无法访问 -Extension 时使用 Select-Object 是否合适?
- python - while循环中try和if语句的问题
- plone - 从 Plone 4.3 迁移到 5.1 后不再访问历史视图
- google-cloud-platform - AccessDeniedException: 403 要计费的项目与已关闭的计费帐户相关联
- unicode - 为什么有些字符串看起来一样,但在检查字符串等价时被认为是不相同的?