我无法弄清楚如何在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”。但是,此测试为绿色。
但是,如果我从模拟端点设置(
convertTo
)中删除了mockOutboundEndpoint.message(0).body().convertTo(String.class).isEqualTo("Blah")
则测试将失败,应有的失败。
我是否以错误的方式使用了
ValueBuilder.convertTo
,或者这是Apache Camel测试框架中的错误? 最佳答案
只需提供类型作为body的参数即可,如下所示:
mockOutboundEndpoint.message(0).body(String.class).isEqualTo("Blah");