javajunitapache-camelguicejukito

How do I register beans in camel unit tests that use beans?


I want to unit test single routes configured in java that uses beans. I read in camel in action (chapter 6.1.4) how to do this:

protected RouteBuilder createRouteBuilder() throws Exception {
    return new myRoute();
}

But in my case the rout needs some beans to be registered. I know how to register beans in standalone app: see here But how to register beans within "CamelTestSupport"? Is there a way to use beans without registry? Probably by injecting them (all beans hav no arg constructors)? I am using Guice and in my tests i am using Jukito (Guice+Mockito).


Solution

  • Afer Camel 3.0.0

    You can now update the JNDI registry from anywhere you have access to the camel context.

    context.getRegistry().bind("myId", myBean);
    

    More info available here https://camel.apache.org/manual/latest/camel-3-migration-guide.html#_camel_test

    Before Camel 3.0.0

    You need to override the createRegistry() method,

    @Override
    protected JndiRegistry createRegistry() throws Exception {
        JndiRegistry jndi = super.createRegistry();
    
        //use jndi.bind to bind your beans
    
        return jndi;
    }
    
    @Test
    public void test() {
        //perform test
    }