繁体   English   中英

在Spring Boot应用程序restTemplate中使用Hoverfly代理

[英]Use hoverfly proxy in Spring boot application restTemplate

我有一个Spring Boot应用程序,该应用程序公开了一个Rest API,该API在内部充当外部Rest API的http客户端。

我的Junit测试类带有@SpringBootTest注释,因此应用程序启动并公开其端点。

我可以在“仿真”模式下使用HoverflyRule将请求代理到我的应用程序rest API,但不适用于该应用程序用来到达外部端点的restTemplate。 我只想测试一下应用程序如何通过外部API的模拟响应进行操作。

hoverfly-java不能解决这种情况吗?我完全错了,很困惑吗?

Hoverfly为您运行了一个模拟服务器-它不知道RestTemplate这样的存在。 您有责任告诉其余模板请求正确的Hoverfly端点。

一种可能的解决方案是在application.properties .properties中使用一个端点作为配置条目,例如:

external-resource.endpoint=http://fancy-stuff.com

并将其注入您的班级:

@Value("${external-resource.endpoint}")
private String endpoint;

restTemplate.get(endpoint, ...);

然后,您可以具有专门用于测试的application-test.properties配置,在此配置中,您可以具有指向Hoverfly模拟端点的正确端点:

#Hoverfly mocked endpoint
external-resource.endpoint=http://localhost:9000

在这种情况下,您唯一要做的就是将@ActiveProfiles("test")放在您的测试类上,这将激活“ test”配置文件,并接受指向Hoverfly的终结点值。

希望有道理!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM