2017-12-11 11 views
1

나는 아파치 낙타 루트에 대한 junit 테스트를하려고합니다. 이 같은 뭔가 :테스트 낙타 석영 루트

@RunWith(CamelSpringJUnit4ClassRunner.class) 
@ContextConfiguration(
    loader = CamelSpringDelegatingTestContextLoader.class 
) 
public class MyExportRouteBuilderIT extends CamelTestSupport { 
    @Test 
    public void test() { 
     // trigger and check the files made by route builder processor 
    } 

    @Override 
    protected RouteBuilder createRouteBuilder() throws Exception { 
     return new MyExportRouteBuilder(); 
    } 
} 

빌더 클래스가이

from("quartz2://exportJob?cron=" + cronTrigger) 
.setHeader(FILE_NAME, expression(FILE_NAME_FORMAT)) 
.process(myExportRouteProcessor) 
.marshal(new BindyCsvDataFormat(MyExportData.class)) 
.to("file:///destination); 

같이 정의되는 'myExportRouteProcessor'클래스는 단지 JPA 저장소에서 일부 데이터를 가져오고 경로에 결과를 저장합니다. 내가 원하는 것은 테스트 과정에서이 경로를 트리거하여 전체 프로세스가 제대로 완료되었는지 확인하는 것입니다. 현재 프로세서가 시작되지 않았습니다. 더 무엇을해야합니까?

답변

1

테스트에서 quartz2 구성 요소를 직접 AdviceWithRouteBuilder#replaceFromWith을 사용하여 대체 할 수 있습니다.

@Test 
public void test() throws Exception{ 
    //mock input route (replace quartz with direct) 
    context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() { 
     @Override 
     public void configure() throws Exception { 
      replaceFromWith("direct:triggerQuartz"); 
     } 
    }); 

    //trigger endpoint 
    sendBody("direct:triggerQuartz", null); 

    //do some assertions 
}  
+0

그래, 그게 내가 찾고 있었던 것이다. 코드 스 니펫을 보내 주셔서 감사합니다! – Dario