java - 测试 Camel REST 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 {
        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");
}

我怎么能 mock 它呢?我在 -----myendpoint---- 中输入了什么来引用该路线?

最佳答案

作为一种可能的解决方案,您可以为您的 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;

希望这对您有所帮助。

关于java - 测试 Camel REST DSL 消费者模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31081115/

相关文章:

java - AJAX 调用未到达 Spring MVC Controller

java - @Component 在 Spring 测试中未被读取

asp.net-mvc - ASP.MVC 中的"new"和 'Create' RESTful 操作名称或 'Create'

Java - 如何处理 DAO 内的 JDBC 连接

java - Java中的选择排序不一致

java - itext 保护 pdf 不被修改

java - 我如何验证它,以便下面的前 3 位数字范围为 100-300(含),后 3 位数字范围为 001-999(含)

spring - hibernate : Downloading a file saved in PostgreSQL database as bytea

java - Java 中有 "worker"

node.js - Rest API Node Js & Express,创建指向自身的链接(href)