当前位置: 首页 > 知识库问答 >
问题:

如何在单独的camel上下文中模拟camelendpoint

巢睿
2023-03-14

我正在为一个向最终用户隐藏骆驼业务的库编写测试用例。该库公开了sendMessages()等方法,并在内部使用ProducerTemplate将消息发送到一个骆驼路由,在该路由中将消息聚合并最终发送到目的地。

我希望能够编写调用library方法的测试,并模拟骆驼路由endpoint,以便稍后对其进行断言。

如果我使用CamelSpringTestSupport,它基本上会创建一个新的类PathXmlApplicationContext,使用它我可以测试路由。

但是,我想测试在库的camel上下文中创建的endpoint,以便测试覆盖库代码。

共有1个答案

益麻雀
2023-03-14

使用Camel的AdviceWith动态更改路由行为(截取交换并发送到模拟endpoint进行验证等)...它非常灵活并利用了熟悉的模拟endpoint等...

例如...截取发送到direction:start路由的消息

context.getRouteDefinition("myRouteId").adviceWith(context, new AdviceWithRouteBuilder() {
    @Override
    public void configure() throws Exception {
       interceptSendToEndpoint("direct:start")
                .skipSendToOriginalEndpoint()
                .to("mock:start");
    }
});

getMockEndpoint("mock:start").expectedBodiesReceived("Hello World");
 类似资料:
  • 我有这样的测试: 在测试中,我禁用了验证/授权 在代码中返回null 还有这个:

  • 说我有以下路线: 让我们假设根据RabbitMQ使用的消息调整和。 我想对3个场景进行单元测试: null 我的问题是:如何模拟/存根RabbitMQendpoint,以便路由在生产中正常执行,但不必实际将测试连接到RabbitMQ服务器?我需要某种“模拟信息”制作人。 一个代码示例或代码片段将非常有帮助,非常感谢!

  • 我已经在我的本地安装了mesos,并按照mesos设置中提到的进行了配置。现在我想在本地机器上安装的mesos上运行spark。我已经根据官方文档配置了spark,并在我的本地机器上运行了单节点hadoop集群。Spark二进制包被复制到hdfs根目录,我已经在spark-env.sh中设置了以下属性: 是Spark-Defaults.conf:

  • 我使用部署在ActiveMQ服务内部的Apache Camel模块。 假设我使用Spring DSL并且在文件(简化版)中有路由定义(实现为): 接下来,我在其他XML文件(简化)中配置了骆驼上下文: 我希望使用IoC术语将来自的共享路由(ID=)声明为每个依赖项的实例,因此来自单个骆驼上下文(ID=、、)的每条路由都应该使用该共享路由的自己的实例(ID=),具有单独的内部状态和bean实例等。

  • 我使用Spring Boot 1.3.2,我注意到问题,ComponentScan在我的测试类不工作。我想嘲笑一些春豆。Spring引导是否阻止ComponentScan? 测试配置类: 测试类:

  • 我希望创建使用Spring上下文和模拟存储库bean的测试。我使用的是Spring Boot 1.3。2.构建快照JUnit Mockito。 以下是我的测试配置类: 此配置的目的是将OfferPresository从Spring上下文中排除并对其进行模拟,由于此,我将能够编写使用Spring上下文和模拟数据库存储库的测试。 这是我的测试课: 测试和测试配置目录为: 我的应用程序配置和包含Offe