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

如何在Apache Camel中测试多路由生成器

端木令雪
2023-03-14

我想在一个单元中测试多个camel RouteBuilder,我有:

更改状态的自定义骆驼处理器

public class MyProcessor implements Processor {
   MyState state;
   public MyProcessor(MyState state) {this.state = state;}

   @Override
   public void process(Exchange exchange) throws Exception {
   state.setState(state.getState() + 5);
   }}

两个简单的路由构建器:第一个路由消息从“direct:start”路由到“direct:endroute1”;第二个从“direct:endroute1”拾取消息并路由到“mock:endroute2”

public class MyRouteBuilder1 extends RouteBuilder {
    MyState state;
    public MyRouteBuilder1(MyState state) {this.state = state;}

    @Override
    public void configure() throws Exception {
        from("direct:start").process(new MyProcessor(state)).to("direct:endroute1");
    }}

public class MyRouteBuilder2 extends RouteBuilder {
    MyState state;
    public MyRouteBuilder2(MyState state) {this.state = state;}

    @Override
    public void configure() throws Exception {
        from("direct:endroute1").process(new MyProcessor(state)).to("mock:endroute2");
    }}
public class MyTest extends CamelTestSupport {
    MyState state = new MyStateImpl();

    @EndpointInject(uri = "mock:result")
    protected MockEndpoint resultEndpoint;

    @Test
    public void testSingleRoute() throws Exception {
        resultEndpoint.expectedMessageCount(1);
        template.sendBody("direct:start", new Object());
        assertTrue(state.getState() == 5);
        resultEndpoint.assertIsSatisfied();
    }

    @Override
    protected RouteBuilder createRouteBuilder() {
     return new MyRouteBuilder1(state) {
            public void configure() throws Exception{
               super.configure();
               from("direct:endroute1").to("mock:result");
           }
     };
 }
}

共有1个答案

宗弘扬
2023-03-14

您可以使用context.addroutes(RouteBuilder)API将多个RouteBuilder添加到上下文中

有关示例,请参阅此单元测试:

https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/addroutesatruntimetest.java

 类似资料:
  • 我的申请中有如下路线- 从("sftp: config").到("file: config") 我必须在生成endpoint时处理那些超出apache camel默认异常处理边界的异常。例如。编写文件时可能会出现异常。我如何处理那个异常? 在camel文档中,我了解到,对于文件消费者,他们提供了不同的选项,比如-consumer。errorHandler和consumer。bridgeErrorH

  • 英文原文:http://emberjs.com/guides/testing/testing-routes/ 单元测试方案和计算属性与之前单元测试基础中说明的相同,因为Ember.Route集成自Ember.Object。 路由测试可以通过集成测试或者单元测试来进行。集成测试对路由的测试具有更好地覆盖性,因为路由通常用来执行过渡和数据加载,这些测试在完整上下文中更加容易测试,而独立上下文则没有那么

  • 问题内容: 我正在使用Gorilla mux和net / http包来创建一些路由,如下所示 我正在尝试编写测试以测试这些路线。例如,我正在尝试测试路由,特别是试图返回的路由,因此我有以下测试代码。 但是,当我运行此测试时,可以想象得到是因为请求未正确路由。 当我从浏览器测试此GET路由时,它确实返回,因此我确定测试的设置方式存在问题。 问题答案: 在这里使用init()是可疑的。它仅在程序初始化

  • 我有一个导出VueRouter实例的文件: 尝试 我尝试执行此文件: 使用节点: 但我遇到了这个错误: $node-experiment-modules test.js(node:13688)experimentalwarning:ESM模块加载程序是实验性的。C:\xampp\htdocs\extract-routes-from-vue-router\test.js:1(函数(exports,r

  • 问题内容: 我正在使用酶+摩卡+柴来测试我的react-redux项目。酶提供浅浅以测试组件的行为。但是我没有找到测试路由器的方法。我正在使用如下的react- router: 我要测试此路由参考组件。如何在reactjs项目中对其进行测试? 编辑1 我正在使用作为路由器框架。 问题答案: 您可以将路由器包装在组件中以对其进行测试。 Routes.jsx index.js 然后,您必须对组件进行浅

  • 我有一个camel-spring-boot应用程序,有几条路由。我现在要集成测试其中的一条路由。 这给我出问题了。如果我在测试中初始化了Spring Boot应用程序,那么所有的路由都会自动加载。属性从我的.yml文件中正确读取。