I have a follow up question on this.
I have this route:

 <camel:route id="inboundFromRtsRoute">
                        <camel:from

uri="jms:queue:{{.online.mq.reservationsReceiveQueue}}?connectionFactory=#rtsConnectionFactory&amp;destinationResolver=#rtsDestinationResolver&amp;asyncStartListener=true&amp;transactionManager=#rtsJmsTransactionManager&amp;transacted=true&amp;lazyCreateTransactionManager=false&amp;disableReplyTo=true"
/>
                        <camel:transacted id="transacted"
ref="TransactionManagerPolicyRequired" /> <!--look further down the
mail on this one-->
                        <camel:to

uri="log:PERF_LOG?level=INFO&amp;groupInterval=60000&amp;groupDelay=10000&amp;groupActiveOnly=false"
/>
                        <camel:log logName="RTS_MESSAGE_TRACE"
loggingLevel="INFO"
                                message="REQUEST: ${body}" />
                        <camel:choice>
                                <camel:when
xmlns:ledgerres="fc:evry:com:xsd:fundscheckmaintainavailablebalance">

<camel:xpath>/ledgerres:Document</camel:xpath>
                                        <camel:to

uri="validator:META-INF/xsd/fundscheckmaintainavailablebalance.xsd" />
                                        <camel:unmarshal>
                                                <camel:jaxb prettyPrint="true"

contextPath="fc.evry.com.xsd.fundscheckmaintainavailablebalance"

partClass="fc.evry.com.xsd.fundscheckmaintainavailablebalance.Document"
/>
                                        </camel:unmarshal>
                                        <camel:to

uri="bean:mainLedgerIntegrationServiceImpl?method=processReservationFromMainLedger(
${body} )" />
                                </camel:when>
                                <camel:when
xmlns:ledgerposting="tg:evry:com:xsd:transactiongatetransfertransaction">

<camel:xpath>/ledgerposting:Document</camel:xpath>
                                        <camel:to

uri="validator:META-INF/xsd/transactiongatetransfertransaction.xsd" />
                                        <camel:unmarshal>
                                                <camel:jaxb prettyPrint="true"

contextPath="tg.evry.com.xsd.transactiongatetransfertransaction"

partClass="tg.evry.com.xsd.transactiongatetransfertransaction.Document"
/>
                                        </camel:unmarshal>
                                        <camel:to

uri="bean:mainLedgerIntegrationServiceImpl?method=processPostingFromMainLedger(
${body} )" />
                                </camel:when>
                        </camel:choice>
                        <camel:onException useOriginalMessage="true">

<camel:exception>java.lang.Exception</camel:exception>
                                <camel:handled>
                                        <camel:constant>true</camel:constant>
                                </camel:handled>
                                <camel:to
uri="log:RTS_MSG_EXCHANGE?showAll=true&amp;level=ERROR" />
                                <camel:to id="inboundFromErrorQueue"
uri="jms:queue:{{.online.mq.reservationsReceiveErrorQueue}}?connectionFactory=#rtsConnectionFactory&amp;destinationResolver=#rtsDestinationResolver&amp;transactionManager=#rtsJmsTransactionManager&amp;disableReplyTo=true"
/>
                        </camel:onException>
                </camel:route>

this route was easily unit-testable by doing overrides in my setup:
 camelContext.getRouteDefinition( "inboundFromRtsRoute" ).adviceWith(
camelContext, new AdviceWithRouteBuilder()
        {
            @Override
            public void configure()
                throws Exception
            {
                replaceFromWith( mockEndpoint.getDefaultEndpoint() );
                weaveById( "inboundFromRtsErrorQueue" ).replace().to(
mockInboundFromRtsErrorQueue );
            }
        } );

before I added the transacted element.
Is there any easy way for me to skip the transacted node in the route?
I tried weaveById( "transacted" ).remove(); but that removes the node
and all child nodes it seems. I just wanna replace the jms input route
AND the transacted element with my mock endpoint.

Is this possible?

Yes I could use embedded active mq for testing - but that leads to a
lot of excessive config.



2012/11/8 James Carman <[email protected]>:
> You can inject mock objects into your route builders very easily.
> Just pick your mock object framework of choice and inject them when
> you create your RouteBuilder.
>
> On Wed, Nov 7, 2012 at 10:37 AM, zzkozak <[email protected]> wrote:
>> Hi,
>>
>>  I have the following route and would like to test it by throwing an
>> exception by the orderRequestCreator bean. How do I do that?
>>
>>
>>
>>  I am using annotated JUnit tests, like this:
>>
>>
>>
>>  Thank you in advance,
>> Marcin
>>
>>
>>
>> --
>> View this message in context: 
>> http://camel.465427.n5.nabble.com/How-to-mock-a-bean-in-a-route-tp5722307.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
--
David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen

Reply via email to