如何在不更改生产代码的情况下测试驼峰路线?

时间:2017-03-03 01:07:03

标签: unit-testing apache-camel

我有一条简单的骆驼路线:

@Component
public class HelloRoute extends RouteBuilder {

    String startEndpoint;

    @Override
    public void configure() {
        from(startEndpoint).process(new HelloProcessor());
    }
}

为了测试,我读到的所有内容都说要添加一个存储结果的模拟端点:

from(startEndpoint).process(new HelloProcessor()).to("mock:result");

这意味着我必须更改我的代码以包含模拟,它将在生产中运行。骆驼文档非常清楚,不要在生产中使用模拟: https://camel.apache.org/mock.html

如何编写使用模拟评估结果的单元测试,但同时路由器类应该在生产中运行,没有任何测试代码或其他人为和不必要的端点,如

to("log:blah")

1 个答案:

答案 0 :(得分:2)

以下是您在测试用例中可以执行的操作

context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() {
       @Override
       public void configure() throws Exception {
          weaveAddLast().to("mock:result");
       }
});

这会将“mock:result”添加到路径的末尾。这样,您就可以修改路由以进行测试而无需重写。