我有以下代码:
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");
}
我怎么能 mock 它呢?我在 -----myendpoint---- 中输入了什么来引用该路线?
最佳答案
作为一种可能的解决方案,您可以为您的 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;
希望这对您有所帮助。
关于java - 测试 Camel REST DSL 消费者模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31081115/