我无法弄清楚如何在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测试框架中的错误?
答案 0 :(得分:2)
只需将类型作为参数提供给body,如下所示:
mockOutboundEndpoint.message(0).body(String.class).isEqualTo("Blah");