【发布时间】:2022-06-29 03:11:37
【问题描述】:
如何在我的单元测试中仅包含某些路由。例如,如何只启用my-translation-route。
public class TestRoute extends RouteBuilder {
@Override
public void configure() {
from("ftp://my-ftp-server:21/messages")
.routeId("my-inbound-route")
.to("direct:my-translation-route");
from("direct:my-translation-route")
.routeId("my-translation-route")
.bean(MyBean.class)
.to("direct:my-outbound-route");
from ("direct:my-outbound-route")
.routeId("my-translation-route")
.to("http://my-http-server:8080/messages");
}
}
我尝试使用 Model#filterRoutes 但这不起作用。所有路线都已加载。
class TestRouteTest extends CamelTestSupport {
@Override
protected RoutesBuilder createRouteBuilder() {
return new TestRoute();
}
@Override
public boolean isUseAdviceWith() {
return true;
}
@Test
void testIfItWorks() throws Exception {
context.setRouteFilterPattern("my-translation-route", null);
AdviceWith.adviceWith(context, "my-translation-route", a -> {
a.mockEndpointsAndSkip("direct:my-outbound-route");
});
context.start();
getMockEndpoint("mock:direct:my-outbound-route").expectedBodyReceived().expression(constant("Hahaha! 42"));
template.sendBodyAndHeaders("direct:my-translation-route", "42", null);
assertMockEndpointsSatisfied();
}
}
我让它与CamelTestSupport#getRouteFilterIncludePattern 的覆盖一起工作,例如:
@Override
public String getRouteFilterIncludePattern() {
return "direct:my-translation-route";
}
但是这是为这个测试类中的所有测试设置的。
【问题讨论】:
标签: apache-camel