Apache Camel: использование ValueBuilder.convertTo в ложных ожиданиях конечной точки

1

Я не могу понять, как использовать ValueBuilder.convertTo в качестве предложения в Apache Camel. По какой-то причине ожидания, содержащие convertTo, игнорируются.

Вот тест, который иллюстрирует проблему:

package wheleph;

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;

public class ConvertToTest extends CamelTestSupport {

    private static final String INBOUND_ENDPOINT = "direct:inbound";
    private static final String OUTBOUND_ENDPOINT = "mock:outbound";

    @Test
    public void testConvertToBody() throws InterruptedException {
        MockEndpoint mockOutboundEndpoint = getMockEndpoint(OUTBOUND_ENDPOINT);
        mockOutboundEndpoint.expectedMessageCount(1);
        mockOutboundEndpoint.message(0).body().convertTo(String.class).isEqualTo("Blah");

        template.sendBody(INBOUND_ENDPOINT, "Message 1");

        assertMockEndpointsSatisfied();
    }

    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from(INBOUND_ENDPOINT).
                        to(OUTBOUND_ENDPOINT);
            }
        };
    }
}

Вышеупомянутый тестовый пример должен завершиться неудачно, поскольку фиктивная конечная точка фактически получает сообщение с телом "Сообщение 1", которое не равно ожидаемому значению "Бла". Однако этот тест зеленый.

Но если я удалю convertTo из макетной настройки конечной точки (mockOutboundEndpoint.message(0).body().convertTo(String.class).isEqualTo("Blah")), тогда тест завершится неудачно.

Я использую ValueBuilder.convertTo неправильно или это ошибка в инфраструктуре тестирования Apache Camel?

Теги:
unit-testing
mocking
apache-camel

1 ответ

2
Лучший ответ

Просто укажите тип как параметр для тела, как показано:

mockOutboundEndpoint.message(0).body(String.class).isEqualTo("Blah");
  • 0
    Спасибо, Клаус. Это работает, если я хочу утверждать тело сообщения. Но что, если я захочу установить значение свойства? И какова цель ValueBuilder.convertTo?
  • 0
    Существует .header и .property также я думаю.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню