测试Camel REST DSL消费者模板

时间:2015-06-26 19:53:22

标签: java spring rest apache-camel dsl

我有以下代码:

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.model.rest.RestBindingMode;

public class OrderNumberRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        restConfiguration().component("servlet").bindingMode(RestBindingMode.json)          
            .dataFormatProperty("prettyPrint", "true")
            .contextPath("suppliera/rest").port(8080);

        rest("/ordernumber").description("ordernumber rest service")
            .consumes("application/json").produces("application/json")

            .get("/{id}").description("get ordernumber").outType(ServiceResponse.class)
            .to("bean:orderNumberService?method=getOrderNumber(${header.id})");
    }
}

如何使用JUnit测试此代码?可以CamelTestSupport处理吗?

我想创建一个类似的测试:

@Produce(------myendpoint----) 
protected ProducerTemplate testProducer; 

public void mytest(){
testProducer.requestBody("foo");
}

我怎么能嘲笑那个?我放在----- myendpoint ----引用那条路线?

2 个答案:

答案 0 :(得分:3)

作为一种可能的解决方案,您可以设置REST路由的URI并在junit测试中使用该URI。为此,您需要通过调用 route 方法将RestDefinition切换到RouteDefinition,然后可以从方法调用并设置uri参数。 使用直接端点的示例:

    rest("/ordernumber").description("ordernumber rest service")
    .consumes("application/json").produces("application/json")
    .get("/{id}").description("get ordernumber").outType(ServiceResponse.class)
    .route().from("direct:myendpoint")
    .to("bean:orderNumberService?method=getOrderNumber(${header.id})");

在你的junit课程中,你可以输入:

@Produce(uri = "direct:myendpoint")
protected ProducerTemplate testProducer;

希望这有帮助。

答案 1 :(得分:0)

您是否在此页面上看过这些示例? https://camel.apache.org/testing.html

由于您有Spring,请尝试该页面上的Spring测试示例。与使用CamelTestSupport相比,这些更适合您的情况。