【问题标题】:Use hoverfly proxy in Spring boot application restTemplate在 Spring Boot 应用程序 restTemplate 中使用 hoverfly 代理
【发布时间】:2018-05-08 19:06:04
【问题描述】:

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

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

我可以在模拟模式下使用 HoverflyRule 将请求代理到我的应用程序 rest API,但它不适用于应用程序用来访问外部端点的 restTemplate。这只是我想测试的,应用程序如何处理来自外部 API 的模拟响应。

hoverfly-java 没有涵盖这种情况?我完全错了,很困惑?

【问题讨论】:

    标签: spring hoverfly


    【解决方案1】:

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

    一种可能的解决方案是在您的application.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") 放在您的测试类上,这将激活“测试”配置文件并将端点值指向 Hoverfly。

    希望它有意义!

    【讨论】:

    • 谢谢!。这是有道理的,但我想利用随机端口选择。我无法在 CI 管道中使用固定端口号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 2021-12-18
    • 2017-10-08
    • 1970-01-01
    相关资源
    最近更新 更多