
[英]Could not autowire field:RestTemplate in Spring boot application
[英]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.