测试骆驼石英路线

Dar*_*rio 2 java testing spring apache-camel quartz

我尝试对 apache 骆驼路线进行 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

builder 类是这样定义的

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

'myExportRouteProcessor' 类只是从 JPA 存储库中获取一些数据并将结果放到路由中。我想要的是在测试类中触发此路由以检查整个过程是否正确完成。目前,处理器没有被触发。我应该怎么做?

Bed*_*dla 6

您可以直接使用AdviceWithRouteBuilder#replaceFromWith替换测试中的quartz2 组件。

@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
}    
Run Code Online (Sandbox Code Playgroud)