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

apache-camel, guice, java, jukito, junit

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
}

Problem

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).

Original source