2016-12-20 8 views
0

Я новичок в мире верблюдов. Используя camel-cxf, я реализовал веб-сервис (на основе идентификатора запроса, запросите базу данных, если она найдена, с ответом с информацией о записи, возвращаемой с помощью статического ответа), которая имеет некоторые очень базовые взаимодействия с базой данных и преобразование.Взаимодействие базы данных Camel Stub на модульном тестировании

Я пытаюсь написать некоторые модульные тесты (независимо от базы данных i.e), заглушая взаимодействие базы данных для формирования статического ответа). Есть ли способ пропустить отправку в конечную точку базы данных и отправить статические данные на обмен (имитировать запись базы данных) и проверить результат преобразования?

С уважением, Шанкар

+0

Любые образцы кода могли бы помочь? – Shankar

+0

Вы можете [обмануть существующие конечные точки] (https://camel.apache.org/mock.html). – Ralf

+0

Если у вас есть книга «Верблюд в действии», ее охватывают в главе тестирования –

ответ

0

Я добавил следующий код в мой тестовый класс и проверит mockendpoints с использованием метода expectedBodiesReceivedInAnyOrder.

@Before 
public void mockEndPoints() throws Exception{  
    AdviceWithRouteBuilder mockBldr = new AdviceWithRouteBuilder() {    
     @Override 
     public void configure() throws Exception {    
      interceptSendToEndpoint("mybatis:queryTable?statementType=SelectList")    
      .skipSendToOriginalEndpoint() 
      .process(new Processor(){ 
       @Override 
       public void process(Exchange exchange) throws Exception { 
        ArrayList<DataObject> ruleList = new ArrayList<DataObject>(); 
         ruleList.add(new DataObject(1,"ABC"));      
         exchange.getIn().setBody(ruleList); 
        }    
      }) 
      .to("mock:mybatisSelect");        
     } 
    }; 
    context.getRouteDefinition("route1").adviceWith(context, mockBldr); 
}