我在这篇文章中提供了如何模拟对远程服务的请求然后存根响应的示例。 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作为下游服务。我还没有找到任何这样做的例子,或者我正在寻找错误的地方。
答案 0 :(得分:1)
虽然可以进行单元测试,但是调用filter.run()
要困难得多,因为缺少几个先决条件。
我也错过了在网关中没有RestTemplate来模拟
我最终做的是使用spring-cloud-contracts
provider
zuul.routes.provider.*
设置RestAssured
拨打provider
路由的网关。 提供者本身就是存根的常规DSL,它只是检查标题是否存在,如果是,则使用HttpStatus.OK
进行回复。这是使用spring-cloud-contract
我将在此处发布示例https://github.com/abshkd/spring-cloud-sample-games