Jhipster网关使用MockRestServiceServer测试转发服务调用

时间:2018-03-07 06:34:07

标签: junit jhipster spring-cloud

我在这篇文章中提供了如何模拟对远程服务的请求然后存根响应的示例。 https://objectpartners.com/2013/01/09/rest-client-testing-with-mockrestserviceserver/虽然我理解它的要点,但它使用了我可以注入的RestTemplate

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

我需要测试在发生对JHipster Gateway的调用时转发某些标头,并且需要将其转发到下游服务。出于此测试的目的,只要ZuulFilter被激活,这种服务是否存在就无所谓了。

例如 client -> gateway -(add header) -> (mock) book service (has header?) 这就是我试图从我的网关测试但我甚至不确定如何启动网关并向不存在的随机服务名称发送请求以及捕获该请求。请注意,如果重要,我会启用发现客户端并使用resttemplate作为下游服务。我还没有找到任何这样做的例子,或者我正在寻找错误的地方。

1 个答案:

答案 0 :(得分:1)

虽然可以进行单元测试,但是调用filter.run()要困难得多,因为缺少几个先决条件。

我也错过了在网关中没有RestTemplate来模拟

我最终做的是使用spring-cloud-contracts

  1. 创建一个存根服务说provider
  2. 然后将其添加到zuul.routes.provider.*设置
  3. 使用Webenvironment.DEFINED_PORT启动SpringbootTest,这样我就可以运行整个上下文+ servlet
  4. 使用RestAssured拨打provider路由的网关。
  5. 提供者本身就是存根的常规DSL,它只是检查标题是否存在,如果是,则使用HttpStatus.OK进行回复。这是使用spring-cloud-contract

    完成的

    我将在此处发布示例https://github.com/abshkd/spring-cloud-sample-games