У меня есть следующие конечные точки и маршрут.
@Bean
public CxfEndpoint requestEndpoint() {
CxfEndpoint endpoint = new CxfEndpoint();
endpoint.setAddress(SERVICE_ADDRESS);
endpoint.setServiceClass(Service.class);
endpoint.setWsdlURL(WSDL_LOCATION);
endpoint.setBus(bus);
endpoint.setProperties(endpointProperties);
return endpoint;
}
И
from("cxf:bean:requestEndpoint")
//Custom logic with various outbound routes
.choice()
....
.to("direct:route1")
....
.to("direct:route2")
Я хочу проверить это.Различные входные данные должны быть направлены на различные маршруты.
@RunWith(CamelSpringBootRunner.class)
@SpringBootTest
@MockEndpoints
@Configuration
public class RequestRouteTest extends CamelTestSupport {
@Autowired
private ProducerTemplate producerTemplate;
@EndpointInject(uri = "mock:direct:route1")
private MockEndpoint mockCamel;
@Test
public void myTest() throws Exception {
mockCamel.expectedMessageCount(1);
producerTemplate.sendBody("cxf:bean:requestEndpoint", bodyForRoute1);
mockCamel.assertIsSatisfied();
}
}
Но в этом случае у меня появляется следующая ошибка:
Причина: java.net.ConnectException: вызывается ConnectException http://myurl: Соединение отклонено (соединение отклонено)
это логично, я не запускал приложение.
Затем я пытаюсь заменить конечную точку cxf на макет:
MockEndpoint mockEndpoint = getMockEndpoint("mock:cxf:bean:requestEndpoint");
producerTemplate.sendBody(mockEndpoint, bodyForRoute1);
И я получил
Утверждение: mock: // direct: route1 выполняется - FAILED
и исключение (java.lang.AssertionError: mock: // direct: route1 Количество полученных сообщений. Ожидаемое: <1> но было: <0>), потому что мой код маршрута не был вызван.
Как правильно проверить маршрут?Я хотел бы попробовать два интересных способа:
1) Тестирование с реальной конечной точкой http (это позволяет тестировать ранние фазы запроса - например, запросы с неверным xml)
2)Изолированный тест, когда полезная нагрузка POJO находится в теле сообщения.
Буду признателен, если найдется решение моей проблемы