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

Jhipster gateway Tests for forward service calls with MockRestServiceServer

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

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

我需要测试某些 headers 在调用 JHipster Gateway 时被转发并且需要转发到下游服务。无所谓,为了本次测试,只要激活了ZuulFilter,是否存在这样的服务就无所谓了。

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

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

我还想念的是网关中没有可模拟的 RestTemplate

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

  1. 创建存根服务说 provider
  2. 然后将其添加到 zuul.routes.provider.* 设置
  3. 使用 Webenvironment.DEFINED_PORT 启动 SpringbootTest 这样我就可以拥有整个上下文+servlet 运行
  4. 使用RestAssured 调用provider 路由的网关。

提供者本身是存根的 groovy DSL,它简单地检查 header 是否存在,如果存在则用 HttpStatus.OK 响应这是使用 spring-cloud-contract

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