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