Как проверить верблюжий путь без изменения производственного кода?

У меня есть простой верблюжий маршрут:

@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 ответ

Вот что вы можете сделать в своем тестовом примере

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

Это добавит "mock:result" в конец маршрута. Таким образом, вы сможете изменять маршруты для тестирования, не переписывая их.

Другие вопросы по тегам