ok, I have copied the test from

https://svn.apache.org/repos/asf/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/mock/InterceptSendToMockEndpointStrategyTest.java

and got that working by changing from SpringTestSupport to
CamelSpringTestSupport.

Then I tried to reduce it down to my example and found that when I remove
the route that consumes from direct:foo, the test fails with:

org.apache.camel.CamelExchangeException: No consumers available on endpoint:
Endpoint[direct://foo]. Exchange[Message: Hello World]

Why is this? Do you have to have a consumer for every endpoint you wish to
mock?





On Mon, Mar 28, 2011 at 5:08 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:

> Use
>          template.sendBody("direct:start", "blah");
>
> Instead of
> >         template.sendBody("mock:direct:start", "blah");
>
>
> And mind that the test your picked is using the new auto mock feature
> (mock existing endpoints) from Camel 2.7
> http://camel.apache.org/mock.html
>
>
>
>
> On Mon, Mar 28, 2011 at 5:50 PM, Tom Howe <tomh...@artcore.com> wrote:
> > The spring-testing.html doesnt mention CamelSpringTestSupport. Im not
> sure
> > where to look in camel test suite.
> >
> > I tried this..
> >
> > public class SimpleRouteTest extends CamelSpringTestSupport {
> >
> >     @Override
> >     protected AbstractXmlApplicationContext createApplicationContext() {
> >         return new
> ClassPathXmlApplicationContext("/CamelRoutesSimple.xml");
> >     }
> >
> >     public String isMockEndpoints() {
> >         return "*";
> >     }
> >
> >     @Test
> >     public void testSendMessage() throws Exception {
> >         getMockEndpoint("mock:direct:end").expectedMessageCount(1);
> >         template.sendBody("mock:direct:start", "blah");
> >         assertMockEndpointsSatisfied();
> >     }
> > }
> >
> > It doesnt work though...
> >
> > From the log it looks like my route is started but then a fresh camel
> > context without route is started for the tests.
> >
> > 2011-03-28 16:46:22,976 [main] INFO
> > org.apache.camel.spring.SpringCamelContext  - Apache Camel 2.7.0
> > (CamelContext: camel-1) is starting
> > 2011-03-28 16:46:22,976 [main] INFO
> > org.apache.camel.spring.SpringCamelContext  - JMX enabled. Using
> > ManagedManagementStrategy.
> > 2011-03-28 16:46:23,533 [main] INFO
> > org.apache.camel.spring.SpringCamelContext  - Route: route1 started and
> > consuming from: Endpoint[direct://start]
> > 2011-03-28 16:46:23,538 [main] INFO
> > org.apache.camel.spring.SpringCamelContext  - Total 1 routes, of which 1
> is
> > started.
> > 2011-03-28 16:46:23,539 [main] INFO
> > org.apache.camel.spring.SpringCamelContext  - Apache Camel 2.7.0
> > (CamelContext: camel-1) started in 0.562 seconds
> > 2011-03-28 16:46:23,542 [main] INFO  agentsmith.routes.SimpleRouteTest  -
> >
> ********************************************************************************
> > 2011-03-28 16:46:23,543 [main] INFO  agentsmith.routes.SimpleRouteTest  -
> > Testing: testSendMessage(agentsmith.routes.SimpleRouteTest)
> > 2011-03-28 16:46:23,543 [main] INFO  agentsmith.routes.SimpleRouteTest  -
> >
> ********************************************************************************
> > 2011-03-28 16:46:23,547 [main] INFO
> > org.apache.camel.impl.InterceptSendToMockEndpointStrategy  - Adviced
> > endpoint [direct://start] with mock endpoint [mock:direct:start]
> > 2011-03-28 16:46:23,557 [main] INFO
> > org.apache.camel.impl.InterceptSendToMockEndpointStrategy  - Adviced
> > endpoint [direct://end] with mock endpoint [mock:direct:end]
> > 2011-03-28 16:46:23,558 [main] INFO
> > org.apache.camel.impl.InterceptSendToMockEndpointStrategy  - Adviced
> > endpoint [spring-event://default] with mock endpoint
> > [mock:spring-event:default]
> > 2011-03-28 16:46:23,577 [main] INFO
> > org.apache.camel.component.mock.MockEndpoint  - Asserting:
> > Endpoint[mock://spring-event:default] is satisfied
> > 2011-03-28 16:46:23,577 [main] INFO
> > org.apache.camel.component.mock.MockEndpoint  - Asserting:
> > Endpoint[mock://direct:end] is satisfied
> >
> > java.lang.AssertionError: mock://direct:end Received message count.
> > Expected: <1> but was: <0>
> >     at
> > org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:1086)
> > ....
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > On Mon, Mar 28, 2011 at 4:37 PM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> >>
> >> On Mon, Mar 28, 2011 at 5:34 PM, Tom Howe <tomh...@artcore.com> wrote:
> >> > I've read the testing page but it doesnt give any good eaxmple of
> using
> >> > spring xml routes
> >> >
> >>
> >> There is more here
> >> http://camel.apache.org/spring-testing.html
> >>
> >>
> >> > Can you point me to an example of CamelSpringTestSupport ? I cant see
> >> > any
> >> > docs on it's usage?
> >> >
> >>
> >> Just try to extend this class and it forces you to implement a method
> >> where you load the Spring XML file.
> >> There are many examples in the source code, eg in camel-spring module.
> >> https://svn.apache.org/repos/asf/camel/trunk/components/camel-spring/
> >>
> >>
> >> Btw the Camel in Action book chapter 6 covers all about testing.
> >>
> >>
> >>
> >>
> >> > Thanks, Tom
> >> >
> >> > On Mon, Mar 28, 2011 at 4:27 PM, Claus Ibsen <claus.ib...@gmail.com>
> >> > wrote:
> >> >
> >> >> Hi
> >> >>
> >> >> Check out this page
> >> >> http://camel.apache.org/testing
> >> >>
> >> >> You can then use any IoC means to inject the mocks, such as
> >> >> @EndpointInjected or any of the Spring or the new @Resource from JDK6
> >> >> etc.
> >> >>
> >> >> Also you can extend CamelSpringTestSupport which allows you to load a
> >> >> Spring XML file.
> >> >> Thats often what we do to test Camel as CamelXXTestSupport is easy to
> >> >> get mocks, producer template and whatnot without having to IoC them.
> >> >>
> >> >>
> >> >> On Mon, Mar 28, 2011 at 5:11 PM, Tom Howe <tomh...@artcore.com>
> wrote:
> >> >> > I have a routes defined in CamelRoutes.xml and I would like to test
> >> >> > them
> >> >> by
> >> >> > using the wrapping technique described at the bottom of
> >> >> > http://camel.apache.org/mock.html.
> >> >> >
> >> >> > My CamelRoutes.xml
> >> >> >     <route autoStartup="true"  xmlns="
> >> >> http://camel.apache.org/schema/spring
> >> >> > ">
> >> >> >            <from uri="direct:start"/>
> >> >> >            <to uri="direct:end"/>
> >> >> >        </route>
> >> >> >
> >> >> > So I created CamelRoutesTest.xml containing:
> >> >> >
> >> >> >    <import resource="CamelRoutes.xml"/>
> >> >> >    <bean id="mockAllEndpoints"
> >> >> > class="org.apache.camel.impl.InterceptSendToMockEndpointStrategy"/>
> >> >> >
> >> >> > but I am not sure how to create a test that both loads the spring
> xml
> >> >> > AND
> >> >> > provides access to the mock endpoints.
> >> >> >
> >> >> > If I use..
> >> >> >
> >> >> > @ContextConfiguration( locations=("/CamelRoutesTest"))
> >> >> > public class CamelTest extends AbstractJUnit38SpringContextTests
> >> >> >
> >> >> > }
> >> >> >
> >> >> > then I have no idea how to *get* the mock endpoints
> >> >> >
> >> >> > If I use..
> >> >> >
> >> >> > public class CamelTest extends CamelTestSupport
> >> >> >
> >> >> > }
> >> >> >
> >> >> > then I dont know how to load my camel context..
> >> >> >
> >> >> >
> >> >> > I can't seem to find an example test on the website that uses
> >> >> > CamelTestSupport AND loads routes from spring xml.
> >> >> >
> >> >> > thanks, Tom
> >> >> >
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> Claus Ibsen
> >> >> -----------------
> >> >> FuseSource
> >> >> Email: cib...@fusesource.com
> >> >> Web: http://fusesource.com
> >> >> Twitter: davsclaus
> >> >> Blog: http://davsclaus.blogspot.com/
> >> >> Author of Camel in Action: http://www.manning.com/ibsen/
> >> >>
> >> >
> >>
> >>
> >>
> >> --
> >> Claus Ibsen
> >> -----------------
> >> FuseSource
> >> Email: cib...@fusesource.com
> >> Web: http://fusesource.com
> >> Twitter: davsclaus
> >> Blog: http://davsclaus.blogspot.com/
> >> Author of Camel in Action: http://www.manning.com/ibsen/
> >
> >
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: cib...@fusesource.com
> Web: http://fusesource.com
> Twitter: davsclaus
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>

Reply via email to