具有硬编码 url 的 API 客户端的 Wiremock 存根
Wiremock stubs for an API client that has hardcoded urls
我正在尝试使用线控测试来测试一个小型服务。
我可以删除大部分第三方服务 URL 但是我 运行 在使用其 sanbox URL 硬编码的客户端库时遇到问题。
当前示例适用于 Braintree。
我想存根一个 return 来调用“https://api.sandbox.braintreegateway.com:443”
我无法在测试属性中覆盖该值。
有没有一种方法可以配置 wiremock 以识别对 https://api.sandbox.braintreegateway.com 的调用:和 return 存根响应?
我从未使用过 Braintree SDK,但据我所知,您通过向 BraintreeGateway
对象提供 Environment
来使用它:https://github.com/braintree/braintree_java/tree/master#quick-start-example
我会创建一个包含 Wiremock URL 的专用测试 Environment
实例,并在我的集成测试中将其提供给 BraintreeGateway
。
假设 Braintree 库中的 HTTP 客户端尊重 Java 的代理设置系统属性,您可以将 WireMock 配置为转发代理(或浏览器代理,如 WireMock 的文档所称),允许它拦截调用任何外部域。
本文档解释了如何使用新的代理配置器实用程序 class 执行此操作:http://wiremock.org/docs/multi-domain-mocking/。
基本上你想做这样的事情:
JvmProxyConfigurer.configureFor(wireMockServer);
wireMockServer.stubFor(get("/stuff")
.withHost(equalTo("api.sandbox.braintreegateway.com"))
.willReturn(okJson("{ ... }")));
// Test something that uses the Braintree client lib
我正在尝试使用线控测试来测试一个小型服务。
我可以删除大部分第三方服务 URL 但是我 运行 在使用其 sanbox URL 硬编码的客户端库时遇到问题。
当前示例适用于 Braintree。
我想存根一个 return 来调用“https://api.sandbox.braintreegateway.com:443”
我无法在测试属性中覆盖该值。
有没有一种方法可以配置 wiremock 以识别对 https://api.sandbox.braintreegateway.com 的调用:和 return 存根响应?
我从未使用过 Braintree SDK,但据我所知,您通过向 BraintreeGateway
对象提供 Environment
来使用它:https://github.com/braintree/braintree_java/tree/master#quick-start-example
我会创建一个包含 Wiremock URL 的专用测试 Environment
实例,并在我的集成测试中将其提供给 BraintreeGateway
。
假设 Braintree 库中的 HTTP 客户端尊重 Java 的代理设置系统属性,您可以将 WireMock 配置为转发代理(或浏览器代理,如 WireMock 的文档所称),允许它拦截调用任何外部域。
本文档解释了如何使用新的代理配置器实用程序 class 执行此操作:http://wiremock.org/docs/multi-domain-mocking/。
基本上你想做这样的事情:
JvmProxyConfigurer.configureFor(wireMockServer);
wireMockServer.stubFor(get("/stuff")
.withHost(equalTo("api.sandbox.braintreegateway.com"))
.willReturn(okJson("{ ... }")));
// Test something that uses the Braintree client lib