Для тестирования существующих маршрутов вы можете использовать AdviceWith и проконсультировать маршрут до его тестирования.
Я предлагаю использовать weaveById, который является самым точным способом замены частей маршрута.
Например, в следующем маршруте
from("direct:start")
.to("mock:foo")
.to("mock:bar").id("bar")
.to("mock:result");
После установки идентификатора «макет: бар» на «бар», то вы можете использовать в тесте
context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
// weave the node in the route which has id = bar
// and replace it with the following route path
weaveById("bar").replace().multicast().to("mock:a").to("mock:b");
}
});
В вас, например, вы можете сделать что-то вроде:
from("a").b().to("direct:replace").id("replace").c().to("d");
from("direct:replace").signReq().send().validateAns();
А потом советы маршрут с помощью:
weaveById("replace").remove();
Конечно, существует множество способов реализации этой функции. Для всех вариантов и полный пример перейти к http://camel.apache.org/advicewith.html
Совет: Дайте дополнительное внимание к той части кода в примере, который начинается контекст!
// we must manually start when we are done with all the advice with
context.start();
Я не знаю тип возврата каждого из ваших методов, которые вы пытаетесь высмеять, но имейте в виду, что вы можете частично издеваться над объектом. Взгляните на это: http://stackoverflow.com/questions/14970516/use-mockito-to-mock-some-methods-but-not-others –
Спасибо за предложение! Но есть много, чтобы издеваться над этими объектами, я хочу высмеять и/или инкапсулировать всю часть маршрута. – cynepnaxa
Как правило большого пальца, если его трудно проверить, его время для рефакторинга. –