Zaczynam z Camelem i mam problemy z napisaniem testu. Mój przypadek użycia jest dokładnie taki sam jak cfx proxy example. Poza tym, że nie potrzebuję "RealWebservice". Teraz próbuję napisać badanej jednostki (nie test integracji jako dołączone przykładzie), stosując metodę adnotacji:Jak rozpocząć trasę w teście na wielbłądzie z wyśmiewanymi punktami końcowymi
@RunWith(CamelSpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:application-context.xml" })
@MockEndpointsAndSkip
public class RoutesTest {
@Autowired
CamelContext camelContext;
@EndpointInject(uri = "mock:cxf:bean:cxfEndpoint", context = "camelContext")
MockEndpoint cxfEndpoint;
@EndpointInject(uri = "mock:log:input", context = "camelContext")
MockEndpoint logInputEndpoint;
@EndpointInject(uri = "mock:http:realhostname:8211/service", context = "camelContext")
MockEndpoint realEndpoint;
@EndpointInject(uri = "mock:cxf:bean:cxfEndpoint")
ProducerTemplate producer;
@Test
public void testLeleuxMifidRoute() throws InterruptedException {
String body = "<blah/>";
cxfEndpoint.expectedBodiesReceived(body);
logInputEndpoint.expectedBodiesReceived(body);
realEndpoint.expectedBodiesReceived(body);
producer.sendBody(body);
MockEndpoint.assertIsSatisfied(camelContext);
}
}
cxfEndpoint odbiera komunikat ale inne punkty końcowe nie.
Trasa wygląda następująco (działa gdy uruchamiam go i wysłać wiadomość z SoapUI, oczywiście ja ukrywane IPS i beannames w tym przykładzie):
<endpoint id="callRealWebService" uri="http://realhostname:8211/service?throwExceptionOnFailure=true" />
<route>
<from uri="cxf:bean:cxfEndpoint?dataFormat=MESSAGE"/>
<to uri="log:input?showStreams=true"/>
<to ref="callRealWebService"/>
<to uri="log:output"/>
</route>
Co robię źle? Wszystkie przykłady i inne pytania, które znalazłem, wydają się używać "direct: start" lub zmienić trasę produkcji.