Как установить заголовок в тесте Camel - PullRequest
0 голосов
/ 10 июля 2020

Я работаю с задачей, в которой я установил заголовок в одном из процессоров.

exchange.getIn().setHeader("ResourceSpec", equipmentSpec.getSpec());

При написании тестовых примеров ожидалось значение. Из-за сбоя этих тестовых примеров .

Mock-RouteTest:

void advice(@Observes CamelContextStartingEvent event, CamelContext context) throws Exception {

    context.getRouteDefinition(test.update)
           .adviceWith(context, new AdviceWithRouteBuilder() {
               @Override
               public void configure() {           
                   weaveByToString(".*lineInquiryBy.*")
                       .replace()
                       .to("mock:lineInquiry");
               }
           });

Нужна помощь, чтобы установить заголовок в макете. Чтобы во время выполнения процессор мог получить значение.

Используя camel-test и camel-test-cdi.

Спасибо

1 Ответ

0 голосов
/ 10 июля 2020

Не уверен, что понимаю ваш вопрос. Что я понял:

  1. У вас есть процессор, который устанавливает заголовок ResourceSpec
  2. У вас есть тест, который удаляет этот процессор с adviceWith из маршрута
  3. Следовательно, более поздний шаг маршрута не выполняется, потому что заголовок ResourceSpec не установлен

Если я правильно понял ваш вопрос, вы можете просто «вставить» setHeader туда, где вы удаляете процессор

weaveByToString(".*lineInquiryBy.*")
    .replace()
    .to("mock:lineInquiry")
    .setHeader("ResourceSpec", constant("static value"));

Если вам нужно динамическое c значение (например, из заголовка сообщения), вы можете использовать Camel Simple язык выражений:

.setHeader("ResourceSpec", simple("${header.myHeader}"));
...