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&destinationResolver=#rtsDestinationResolver&asyncStartListener=true&transactionManager=#rtsJmsTransactionManager&transacted=true&lazyCreateTransactionManager=false&disableReplyTo=true"
/>
<camel:transacted id="transacted"
ref="TransactionManagerPolicyRequired" /> <!--look further down the
mail on this one-->
<camel:to
uri="log:PERF_LOG?level=INFO&groupInterval=60000&groupDelay=10000&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&level=ERROR" />
<camel:to id="inboundFromErrorQueue"
uri="jms:queue:{{.online.mq.reservationsReceiveErrorQueue}}?connectionFactory=#rtsConnectionFactory&destinationResolver=#rtsDestinationResolver&transactionManager=#rtsJmsTransactionManager&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