有没有办法在单元测试期间覆盖处理器?

Dav*_*vid 1 apache-camel

我正在尝试为我的一条骆驼路线编写单元测试.在路由中有一个处理器,我想用存根替换.有没有办法可以做到这一点?我正在考虑使用拦截功能,但我似乎无法确定最佳方式.

例:

from(start)
    .process(myprocessor)
.to(end)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Gna*_*uru 8

是的,您可以使用Camel Advicedwith weaveById功能来执行此操作,该功能用于在测试期间替换节点.

你必须在路线中设置处理器的ID,并使用该ID,你可以编织你想要的任何东西.以下是示例,

@Before
    protected void weaveMockPoints() throws Exception{

        context.getRouteDefinition("Route_ID").adviceWith(context,new AdviceWithRouteBuilder() {            
            @Override
            public void configure() throws Exception {              

                weaveById("myprocessorId").replace().to(someEndpoint);

            }
        });             

        context().start();
    }
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,你必须将它应用于尚未启动的路线.最好根据需要进行更改,然后按照上面的示例启动camelcontext.