Apache Camel:在模拟端点期望中使用ValueBuilder.convertTo

时间:2014-08-24 20:59:20

标签: java unit-testing mocking apache-camel

我无法弄清楚如何在Apache Camel的模拟端点期望中使用ValueBuilder.convertTo作为子句。出于某种原因,包含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”不等于预期值“Blah”。但是这个测试是绿色的。

但是如果我从模拟端点设置中删除convertTomockOutboundEndpoint.message(0).body().convertTo(String.class).isEqualTo("Blah")) 然后测试失败了。

我是以错误的方式使用ValueBuilder.convertTo还是Apache Camel测试框架中的错误?

1 个答案:

答案 0 :(得分:2)

只需将类型作为参数提供给body,如下所示:

mockOutboundEndpoint.message(0).body(String.class).isEqualTo("Blah");