Have you tried overriding isUseAdviceWith in your test? It’s mentioned in the docs http://camel.apache.org/advicewith.html <http://camel.apache.org/advicewith.html>
> On Mar 22, 2016, at 5:14 AM, aturkin <atur...@rencap.com> wrote: > > I can't understand why my tests don't work. I try intercept and skip sending > to endpoint which is bean reference and nothing happens. I'm using version > 2.16.2. > > test-camel.xml > > <bean id="eb" class="com.rencap.emf.bpipe.EndpointBean"/> > <camel:camelContext xmlns="http://camel.apache.org/schema/spring"> > <camel:endpoint id="requestEP" uri="direct:request"/> > <endpoint id="beanEP" uri="bean:eb?method=processMessage" /> > <camel:route id="testRoute"> > <camel:from ref="requestEP"/> > <camel:to ref="sendEP" /> > </camel:route> > </camel:camelContext> > EndpointBean.java > > package com.rencap.emf.bpipe; > > import org.slf4j.Logger; > import org.slf4j.LoggerFactory; > > public class EndpointBean { > private static Logger LOG = LoggerFactory.getLogger(EndpointBean.class); > > public void processMessage( String msg ){ > LOG.info("Processing message: {} ",msg); > } > } > Unit test: > > @EndpointInject(ref="requestEP") > ProducerTemplate requestEP; > @EndpointInject(ref="beanEP") > ProducerTemplate beanEP; > @Autowired > ModelCamelContext camelContext; > @Test > public void test() throws Exception{ > > camelContext.getRouteDefinition("testRoute").adviceWith( camelContext , > new AdviceWithRouteBuilder(){ > @Override > public void configure() throws Exception { > interceptSendToEndpoint( > beanEP.getDefaultEndpoint().getEndpointUri() ). > to("mock:send"). > skipSendToOriginalEndpoint(); > } > }); > TestUtils.waitingFor("Configuration applied", 2000); > > MockEndpoint mockEP = > camelContext.getEndpoint("mock:send",MockEndpoint.class); > mockEP.setExpectedCount( 1 ); > > requestEP.sendBody("Message"); > > mockEP.assertIsSatisfied(); > > TestUtils.waitingFor("All rows commited", 2000); > } > Test always fails. Logs: > > 13:11:02.512 [main] INFO o.apache.camel.model.RouteDefinition - AdviceWith > route after: Route(testRoute)[[From[ref:requestEP]] -> > [InterceptSendToEndpoint[bean://eb?method=processMessage -> > [To[mock:send]]], To[ref:beanEP]]] > 13:11:02.537 [main] INFO o.a.camel.spring.SpringCamelContext - Route: > testRoute started and consuming from: Endpoint[direct://request] > 13:11:02.538 [main] INFO com.rencap.emf.bpipe.test.TestUtils - Wait 2000 > ms. Configuration applied > 13:11:04.554 [main] INFO com.rencap.emf.bpipe.EndpointBean - Processing > message: Message > 13:11:04.556 [main] INFO o.a.c.component.mock.MockEndpoint - Asserting: > Endpoint[mock://send] is satisfied > It means that sending to endpoint isn't being intercepted and skipped. May > be I don't understand something but I coudn't find any restriction on use > this method. > > In additional I noticed the same problem for endpoint with log. If I replace > beanEP on : > > <endpoint id="beanEP" uri="log:LOGMESSAGE" /> > that I receive the same result. But if I replace it on > > <endpoint id="beanEP" uri="seda:send" /> > and add new route : > > <camel:route id="route2"> > <camel:from ref="sendEP"/> > <camel:log message="msg received ${body}"/> > </camel:route> > that I will get expected result and test will be successed. > > What do I do wrong? Or maybe Are there some restrictions on this method? > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Apache-camel-InterceptSendTo-doesn-t-work-with-bean-endpoint-tp5779474.html > Sent from the Camel - Users mailing list archive at Nabble.com.