【问题标题】:testing camel quartz route测试骆驼石英路线
【发布时间】:2017-12-11 18:24:19
【问题描述】:

我尝试为 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();
    }
}

builder类是这样定义的

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

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

【问题讨论】:

    标签: java spring testing apache-camel quartz


    【解决方案1】:

    您可以使用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
    }    
    

    【讨论】:

    • 是的,这就是我要找的。感谢代码 sn-p !
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 2023-03-03
    相关资源
    最近更新 更多