Java 测试Camel REST DSL消费者模板

Java 测试Camel REST DSL消费者模板,java,spring,rest,apache-camel,dsl,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 { restConfigura

我有以下代码:

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中加入了什么来引用这条路线?

你看到这页上的例子了吗


既然您有Spring,请尝试该页面上的Spring测试示例。这些将比使用CamelTestSupport更适合您的情况。作为一种可能的解决方案,您可以设置REST路由的URI,并在junit测试中使用该URI。为此,需要通过调用route方法将RestDefinition切换到RouteDefinition,然后可以调用from方法并设置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;

希望这有帮助。

JUnit将在部署到wildfly之前在您的系统上本地测试代码。如果您正在进行测试,请编辑您的问题并添加源代码,以便我们查看您还需要什么。:)我对这个问题的解决方案是删除java代码并将其传递给
spring.xml
,以不降低代码覆盖率,因此我只测试
bean
。我仍在寻找一种测试REST DSL路径的方法,但感谢@BarettIt的帮助,这是我第一次使用REST,我想做一些类似的事情:@product(direct:myRestEndpoint)protected producer-template testProducer;testProducer.requestBody(“foo”);但是我不知道如何获取rest端点或模拟它。虽然这可能是一个解决方法,但是为了开发测试用例的方便而修改源代码是毫无意义的(如果路由定义存在某种依赖性怎么办?)。虽然我不确定,但我仍然认为一定有其他合适的方法来做到这一点。