我有以下代码:
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.model.rest.RestBindingMode;
public class OrderNumberRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
restConfiguration().component("servlet").bindingMode(RestBindingMode.json)
.dataFormatProperty("prettyPrint", "true")
.contextPath("suppliera/rest").port(8080);
rest("/ordernumber").description("ordernumber rest service")
.consumes("application/json").produces("application/json")
.get("/{id}").description("get ordernumber").outType(ServiceResponse.class)
.to("bean:orderNumberService?method=getOrderNumber(${header.id})");
}
}
如何使用JUnit测试此代码?可以CamelTestSupport
处理吗?
我想创建一个类似的测试:
@Produce(------myendpoint----)
protected ProducerTemplate testProducer;
public void mytest(){
testProducer.requestBody("foo");
}
我怎么能嘲笑那个?我放在----- myendpoint ----引用那条路线?
答案 0 :(得分:3)
作为一种可能的解决方案,您可以设置REST路由的URI并在junit测试中使用该URI。为此,您需要通过调用 route 方法将RestDefinition切换到RouteDefinition,然后可以从方法调用并设置uri参数。 使用直接端点的示例:
rest("/ordernumber").description("ordernumber rest service")
.consumes("application/json").produces("application/json")
.get("/{id}").description("get ordernumber").outType(ServiceResponse.class)
.route().from("direct:myendpoint")
.to("bean:orderNumberService?method=getOrderNumber(${header.id})");
在你的junit课程中,你可以输入:
@Produce(uri = "direct:myendpoint")
protected ProducerTemplate testProducer;
希望这有帮助。
答案 1 :(得分:0)
您是否在此页面上看过这些示例? https://camel.apache.org/testing.html
由于您有Spring,请尝试该页面上的Spring测试示例。与使用CamelTestSupport
相比,这些更适合您的情况。