Как проверить верблюжий путь без изменения производственного кода?
У меня есть простой верблюжий маршрут:
@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" в конец маршрута. Таким образом, вы сможете изменять маршруты для тестирования, не переписывая их.