Java 测试Camel REST DSL消费者模板
我有以下代码:Java 测试Camel REST DSL消费者模板,java,spring,rest,apache-camel,dsl,Java,Spring,Rest,Apache Camel,Dsl,我有以下代码: import org.apache.camel.builder.RouteBuilder; import org.apache.camel.model.rest.RestBindingMode; public class OrderNumberRouteBuilder extends RouteBuilder { @Override public void configure() throws Exception { restConfigura
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中加入了什么来引用这条路线?你看到这页上的例子了吗
既然您有Spring,请尝试该页面上的Spring测试示例。这些将比使用CamelTestSupport更适合您的情况。作为一种可能的解决方案,您可以设置REST路由的URI,并在junit测试中使用该URI。为此,需要通过调用route方法将RestDefinition切换到RouteDefinition,然后可以调用from方法并设置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;
希望这有帮助。JUnit将在部署到wildfly之前在您的系统上本地测试代码。如果您正在进行测试,请编辑您的问题并添加源代码,以便我们查看您还需要什么。:)我对这个问题的解决方案是删除java代码并将其传递给
spring.xml
,以不降低代码覆盖率,因此我只测试bean
。我仍在寻找一种测试REST DSL路径的方法,但感谢@BarettIt的帮助,这是我第一次使用REST,我想做一些类似的事情:@product(direct:myRestEndpoint)protected producer-template testProducer;testProducer.requestBody(“foo”);但是我不知道如何获取rest端点或模拟它。虽然这可能是一个解决方法,但是为了开发测试用例的方便而修改源代码是毫无意义的(如果路由定义存在某种依赖性怎么办?)。虽然我不确定,但我仍然认为一定有其他合适的方法来做到这一点。