So keep in mind that the "endpoints" to a route are just
java.lang.String... So you can do:

String startRoute = "jms:incoming";
String endRoute = "jms:outgoing";

from(startRoute)......to(endRoute)

And then have that string injectable, so you can do
setEndRoute("mock:endpointName")...

But even if you don't want to do that, you can check out "adviceWith" which
wraps the existing endpoint with interesting behavior, including mocking it
out, and/or adding interceptors.

You should check out the doco at http://camel.apache.org/mock.html
You can also check out this refcard that covers essential camel components,
including the Mock component:
http://refcardz.dzone.com/refcardz/essential-camel-components
And lastly, but certainly not least.. the camel source code is packed with
unit tests. There are no better examples than the unit tests from the camel
code base:
http://camel.apache.org/how-can-i-get-the-source-code.html

Cheers,
Christian


On Mon, Jul 29, 2013 at 9:15 AM, Costash <[email protected]> wrote:

> Hi,
>
> I've just started to use camel, and I'm trying to understand and create
> some
> unit tests, but i don t understand how Mok is working or how unit tests
> should look like (i've read the tutorials and documentation about camel
> test).
> What do i mean by not understanging is:
>
> i have a defined route:
> =========================
> public class MyRouteBuilder extends RouteBuilder{
> .....
> @Override
>         public void configure() throws Exception {
> from("jms:queue:inputQueueName").process(new Processor()
> {.........}).to("jms:queue:outputputQueueName");
> ======================
>
> in all the examples found , a new Class extends CamelTestSupport {
>
> and also creating the rounting inside, so it can be moked:
> ===============
>    @Override
>     protected RouteBuilder createRouteBuilder() {
>         return new RouteBuilder() {
>             public void configure() {
>
>
> from("direct:start").filter(header("foo").isEqualTo("bar")).to("mock:result");
>             }
>         };
>     }
> ================
> so the route is defined exactly here, so it can be moked and get the
> endpoints.
>
> BUT, what about to test an allready created route?
> I can't say .to("mock:result");
>
> i suposed it should be:
>
> =========
>  @Override
>     protected RouteBuilder createRouteBuilder() {
> return new MyRouteBuilder();
> }
> ==========
>
>
> So my questions are:
> 1. how can i test a route? (i can't define the rules of routing inside the
> test class by overwriting the createRouteBuilder() , because i already have
> the route implementation => duplicate code)
> 2. Should my MyRouteBuilder have specific methods implemented so i can mok
> it after in the test class?
> 3. is it there another way to test the output messages of a router besides
> Mok?
>       - I did it in one way, but i think is not the "correct" one:
>                - In a Test Class, I've created a Connection factory to a
> jms
> queue and creating a context
>                - I've added the desired route to be tested into the context
> (  context.addRoute(new MyRoutebuilder()))
>                - Started the context (so my router is running in
> "backgroud" let s say)
>                - i've put a message into the input queue of the router with
> another test Router (from file to queue)
>                - i've taken the message from output queue of the router
> with
> a test router (From message to file)
>                - compare the file with an expected one.
>
> But this is bad as concept for unit tests (let s say Junits), i think.
>
> 4. Do you a link, or something to a generic test example of a camel route?
>
> PS: Sorry if the are stupid questions
>
> Thanks,
> Vlad
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/Camel-testing-tp5736444.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>



-- 
*Christian Posta*
http://www.christianposta.com/blog
twitter: @christianposta

Reply via email to