Thanks Joakim,
I have seen this thread already.

For now I resorted to the suggested solution of moving endpoint definitions to 
properties.
My next problem is to assert that a rollback has happened but I'll open another 
thread for that if necessary.

Cheers,
Kai

> -----Original Message-----
> From: Joakim Bjørnstad [mailto:joak...@gmail.com]
> Sent: Tuesday, November 17, 2015 6:37 AM
> To: users@camel.apache.org
> Subject: Re: Camel + SpringBoot + Endpoint Mocking
> 
> Hello,
> 
> Please see this thread:
> http://camel.465427.n5.nabble.com/spring-boot-test-mocks-td5773902.html
> 
> In summary, @MockEndpoints and @MockEndpointsAndSkip are not supported
> in Camel thus far (2.16.0).
> 
> On Fri, Nov 13, 2015 at 2:08 PM, Kai Broszat <kai.bros...@kewill.com> wrote:
> > Hi,
> > I want to test a complex route that involves sending messages to ActiveMQ
> and calling webservices with SpringWs.
> > The route itself is working fine using spring-boot (1.2.7.RELEASE) and the
> camel-spring-boot plugin (2.16.0).
> >
> > Here are the important parts of the code:
> >
> > @Component
> > public class MyRoute extends SpringRouteBuilder {
> >     @Override
> >     public void configure() throws Exception {
> >         from(direct:responseQueue)
> >                 .transacted()
> > .split(...)
> > .to(activemq:individual_persist_queue)
> > .end()
> >                 
> > .to("spring-ws:http://localhost:8088/acknowledge_webservice";)
> >                 .log("DONE");
> >     }
> > }
> >
> > Now I want to test this route by mocking the activemq and spring-ws 
> > endpoints
> so the test can be run without any dependency on the broker or the webserver.
> > My basic requirement is to verify that the right amount of messages are 
> > sent to
> each endpoint.
> >
> > In my current scenario, the original message is split into three parts which
> should be sent to ActiveMQ, followed by a single acknowledge message to the
> WebService.
> > The transaction is there to roll-back the JMS deliveries in case the 
> > web-service
> call fails. None of that should be important for this test however.
> >
> > My test looks as follows:
> >
> > @RunWith(CamelSpringJUnit4ClassRunner.class)
> > @BootstrapWith(CamelTestContextBootstrapper.class)
> > @SpringApplicationConfiguration(classes = MyConfig.class)
> > @DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
> > @MockEndpointsAndSkip public class CamelSpringBootTest {
> >
> >     @Produce(uri = "direct:responseQueue ")
> >     protected ProducerTemplate template;
> >
> >     @EndpointInject(uri = "mock: spring-
> ws:http://localhost:8088/acknowledge_webservice";)
> >     MockEndpoint webserviceMock;
> >
> >     @EndpointInject(uri = "mock:activemq:individual_persist_queue ")
> >     MockEndpoint activemqMock;
> >
> >
> >     @Test
> >     public void test() throws Exception {
> >         activemqMock.expectedMessageCount(3);
> >         webserviceMock.expectedMessageCount(1);
> >
> >         template.sendBody(someXML);
> >
> >         MockEndpoint.assertIsSatisfied(10L, TimeUnit.SECONDS, toKcxMock);
> >     }
> > }
> >
> > When I run the test with the webservice and ActiveMQ available then
> everything works as expected.
> > The assertions fail however as the mock endpoints don't register any
> messages.
> >
> > If I disable the ActiveMQ broker, then I get 'Connection refused' exceptions
> from the ActiveMQ component.
> > As far as I understand Camel shouldn't have tried to send the messages to
> ActiveMQ though because of the @MockEndpointsAndSkip annotation.
> >
> > What am I missing?
> >
> > Thanks for any suggestion,
> > Kai
> >
> > IMPORTANT NOTICE: This email is intended solely for the use of the 
> > individual
> to whom it is addressed and may contain information that is privileged,
> confidential or otherwise exempt from disclosure under applicable law. If the
> reader of this email is not the intended recipient or the employee or agent
> responsible for delivering the message to the intended recipient, you are 
> hereby
> notified that any dissemination, distribution, or copying of this 
> communication is
> strictly prohibited. If you have received this communication in error, please
> immediately return the original message to the sender at the listed email
> address. In accordance with Kewill policy, emails sent and received may be
> monitored. Although Kewill takes reasonable precautions to minimize the risk,
> Kewill accepts no responsibility for any loss or damage should this email 
> contain
> any virus, or similar destructive or mischievous code.
> 
> 
> 
> --
> Kind regards
> Joakim Bjørnstad

Reply via email to