2015-06-26 2 views
3

У меня есть следующий код:Тестирование Camel REST DSL Consumer Template

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 ----, чтобы ссылаться на этот маршрут?

+0

JUnit проверит код локально в вашей системе, прежде чем он будет развернут в wildfly. – Barett

+0

Если у вас есть тест, пожалуйста, отредактируйте свой вопрос и добавьте источник, чтобы мы могли видеть, что еще вам нужно. :) – Barett

+0

Мое решение этой проблемы состояло в том, чтобы удалить код Java и передать его в 'spring.xml', чтобы не уменьшить охват кода, поэтому я тестировал только« bean ». Я по-прежнему ищу способ протестировать маршрут «REST DSL», но спасибо за помощь @Barett – maxcpereira

ответ

0

Вы видели примеры на этой странице? https://camel.apache.org/testing.html

Поскольку у вас есть весна, попробуйте примеры тестов Spring на этой странице. Это будет более подходящим для вашей ситуации, чем использование CamelTestSupport.

+0

Это мой первый опыт использования отдыха, я хочу сделать что-то вроде этого: @Produce (direct: myRestEndpoint) защищен ProducerTemplate testProducer; testProducer.requestBody ("foo"); но я не знаю, как получить остальную конечную точку или издеваться над ней. – maxcpereira

1

В качестве возможного решения вы можете установить URI для маршрута REST и использовать этот URI в своем тестировании junit. Для этого вам нужно переключить RestDefinition на RouteDefinition, вызвав метод route, а затем вы можете вызвать метод от и установить аргумент 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; 

Надеется, что это помогает.

Смежные вопросы