如果我有选择的操作,谁能告诉我如何测试我的Camel Route?

时间:2015-05-31 23:00:05

标签: java unit-testing testing apache-camel

我有一个实现了基于内容的路由EIP(选择操作)的Camel路由。我需要测试一下。我是骆驼的新手。所以,我不确定该怎么做。 谁能告诉我如何测试这个操作。我已经提到了下面的示例代码,必须进行测试。

public void configure() throws Exception 
{   
    onException(Exception.class).handled(true).bean(ErrorHandler.class).stop();

    from("{{input}}?concurrentConsumers=10")
    .routeId("Actions")
        .choice()
            .when().simple("${header.Action} == ${type:status1}")
                .bean(Class, "method1")
            .when().simple("${header.Action} == ${type:status2}")
                .bean(Class, "method2")
            .when().simple("${header.Action} == ${type:status3}")
                .bean(Class, "method3")
            .otherwise()
                .bean(Class, "method4")
        .end();       
}

1 个答案:

答案 0 :(得分:1)

您可以简单地“建议”您的路线并为每个基于内容的路由器选择添加模拟

public void testAdvised() throws Exception {
    // advice the first route using the inlined route builder
    context.getRouteDefinition("Actions").adviceWith(context, new RouteBuilder() {
        @Override
        public void configure() throws Exception {
            replaceFromWith("direct:start");
            weaveByToString(".*method1.*").after().to("mock:choice1");
            weaveByToString(".*method2.*").after().to("mock:choice2");
        }
    });

    getMockEndpoint("mock:choice1").expectedMessageCount(1);
    getMockEndpoint("mock:choice2").expectedMessageCount(0);

    template.sendBody("direct:start", "Hello World");

    assertMockEndpointsSatisfied();
}

这可能需要更多修改才能使其正常工作。如果您需要更多的说明或适合您的路线的真实测试场景,请告诉我。