Dear Camel Guru's
I have a query regarding testing of a Java DSL route and how to effectively
mock endpoints.
I have a SpringRouteBuilder (see following) that polls a database table via the
hibernate component, with the results being split into individual result items
which are transformed into an HAPI HL7 Message via a custom processor before
being sent to a HL7 receiver via a Mina2 endpoint.
Having looked over the testing documentation and not seeing an immediately
obvious answer, my question is, how best to test a routes logic whilst mocking
the producer and consumer endpoints (Hibernate and Mina2 respectively) without
duplicating the route logic in a Junit test?
HL7RouteBuilder
from("hibernate:HibernateModel?consumeDelete=false&consumer.query=FROM
HibernateModel WHERE processed = 'N'")
.split(simple("body"))
.log(LoggingLevel.DEBUG, "my.logger", "Transforming HibernateModel ${body.id}")
.to("direct:toHL7");
from("direct:toHL7")
.onException(new Class[] { java.lang.Exception.class })
.log(LoggingLevel.ERROR, " my.logger", "Failed to generate ORU^R01 ${body.id} -
${exception.stacktrace}")
.stop()
.end()
.log(LoggingLevel.DEBUG, "my.logger", "Transforming HibernateModel ${body.id}
into HLv2 ORU^R01")
.processRef("modelProcessor")
.marshal().hl7(false)
.to("mirthV2StoreOut");
Camel Spring Configuration
<camel:endpoint id="mirthV2StoreOut"
uri="mina2:tcp://${listen.host}:${listen.port}?codec=#hl7codec"/>
<camel:camelContext id="integrationEngineInCamelCtx">
<camel:routeBuilder ref="HL7RouteBuilder" />
</camel:camelContext>
<bean id="HL7RouteBuilder" class="HL7RouteBuilder" scope="prototype"/>
Kind Regards,
Paul