That brought me on the right track: @Before public void setupContext() throws Exception{ // Disable timer route so it can not pop while running tests context().stopRoute("metar-provider-timer");
context.getRouteDefinition("metar-provider-formatter").adviceWith(context, new AdviceWithRouteBuilder() { @Override public void configure() throws Exception { mockEndpointsAndSkip("direct:METARvalidator"); } }); } @Test public void testValidMetar() throws Exception { context.start(); Document doc = this.readXML("/metar_valid.xml"); // Define some expectations // Ensure expectations make sense for the route(s) we're testing getMockEndpoint("mock:direct:METARvalidator").expectedMessageCount(1); getMockEndpoint("mock:direct:METARvalidator").expectedHeaderReceived("locationIndicatorICAO", "LOWW"); context.createProducerTemplate().sendBody("direct:METARformatter", doc); // Validate our expectations assertMockEndpointsSatisfied(); context.stop(); } That seems to do what i expected it to do. While it somewhat makes sense that the injections fail when using adviseWith I am kind of stumped that my AdviseRoute itself also did not work. I.e.: interceptSendToEndpoint("direct:METARvalildator") .skipSendToOriginalEndpoint() .to("mock:direct:METARvalidator"); fails (message does not get send to mocking endpoint and travels down the whole context), but mockEndpointsAndSkip("direct:METARvalidator"); does what I want. If someone has some insight into why this is happening I would love to hear the reason for it. Thanks for your help Stephan and thanks for reading list, Lukas On 2 August 2017 at 12:43, Burkard Stephan <stephan.burk...@visana.ch> wrote: > OK I simplified the test (removed xml read, set header with xpath etc) and > got the test pass. > > I used "mockEndpointsAndSkip" in the setup and "getMockEndpoint" instead of > an instance variable mock. > > Hope you can adapt it for your (complete) case. > Stephan > > @Produce(uri = "direct:METARformatter") > protected ProducerTemplate input; > > @Before > public void setupContext() throws Exception{ > context.getRouteDefinition("fromMETARformatter").adviceWith(context, > new AdviceWithRouteBuilder() { > @Override > public void configure() throws Exception { > mockEndpointsAndSkip("direct:*"); > } > }); > } > > @Test > public void testValidMetar() throws Exception { > context.start(); > getMockEndpoint("mock:direct:METARvalidator").expectedMessageCount(1); > input.sendBody("MyMessageBody"); > // Validate our expectations > assertMockEndpointsSatisfied(); > } > > -----Ursprüngliche Nachricht----- > Von: Lukas Winkler [mailto:winklerlu...@gmail.com] > Gesendet: Mittwoch, 2. August 2017 11:24 > An: users@camel.apache.org > Betreff: Re: AdviceWith in test not followed > > Hallo Stephan, > > yes I already tried and just had another run, does not change a thing (also > tried with completely different mock endpoint just to be sure). > > Let me also use this opportunity to attach a few lines from the unittest run: > [ main] BlueprintCamelContext INFO > Route: metar-provider-formatter is stopped, was consuming from: > Endpoint[direct://METARformatter] > [ main] BlueprintCamelContext INFO > Route: metar-provider-formatter is shutdown and removed, was consuming > from: Endpoint[direct://METARformatter] > [ main] RouteDefinition INFO > AdviceWith route after: > Route(metar-provider-formatter)[[From[direct:METARformatter]] -> > [InterceptSendToEndpoint[direct:METARvalildator -> > [To[mock:outputFromFormatter]]], SetHeader[locationIndicatorICAO, > xpath{XPath: //aixm:locationIndicatorICAO[1]/text()}], > To[direct:METARvalidator]]] > [ main] BlueprintCamelContext INFO > Route: metar-provider-formatter started and consuming from: > Endpoint[direct://METARformatter] > [ main] BlueprintCamelContext INFO > Apache Camel 2.17.0.redhat-630187 (CamelContext: > metar-provider-context) is starting > [ main] BlueprintCamelContext INFO > Total 6 routes, of which 5 are started. > [ main] BlueprintCamelContext INFO > Apache Camel 2.17.0.redhat-630187 (CamelContext: > metar-provider-context) started in 0.000 seconds > > - Lukas > > On 2 August 2017 at 11:15, Burkard Stephan <stephan.burk...@visana.ch> wrote: >> Just a quick guess to try: have you tried to replace the "to(output)" with >> "to("mock:outputFromFormatter")"? >> >> Cheers >> Stephan >> >> >> -----Ursprüngliche Nachricht----- >> Von: Lukas Winkler [mailto:winklerlu...@gmail.com] >> Gesendet: Mittwoch, 2. August 2017 11:10 >> An: users@camel.apache.org >> Betreff: AdviceWith in test not followed >> >> Dear list, >> >> starting out with Camel and run into a problem when trying to test part of >> my camel context. >> >> Please find the test code as well as a snipped of the 'to test' route in the >> following gist: >> https://gist.github.com/ingwinlu/bb047cc409fb295b8d74b617ae04008c >> >> From the logs that are running I can see that the message I send through the >> test gets routed via the original path. >> >> Camel Version is Apache Camel 2.17.0.redhat-630187 >> >> BR and thanks for any help, >> Lukas