如何配置Wiremock拦截客户端硬编码的第三方API请求并返回Stub响应
解决方案
完全可以实现,以下是两种经过验证的可行方案:
方案1:通过客户端代理配置实现(优先推荐)
这种方案无需修改系统级配置,适配性最高:
- 启动Wiremock时开启代理模式,添加启动参数
--enable-browser-proxying - 初始化Braintree客户端时,将其HTTP代理地址配置为Wiremock的监听地址(例如本地运行的话默认是
127.0.0.1:8080) - 编写Stub规则时显式匹配目标主机头即可,参考示例:
stubFor(post(urlEqualTo("/merchants/你的商户ID/transactions")) .withHost(equalTo("api.sandbox.braintreegateway.com")) .willReturn(aResponse() .withStatus(200) .withBody("预设的响应内容")) );
注意:你需要提前将Wiremock的自签名根证书导入到测试环境的信任证书库中,避免HTTPS请求报证书校验错误
方案2:修改本地Hosts + Wiremock监听443端口
如果不想修改Braintree客户端的任何配置,可以用这种方案:
- 修改本地系统Hosts文件,添加规则
127.0.0.1 api.sandbox.braintreegateway.com - 启动Wiremock时指定监听端口为443,同时配置带有
api.sandbox.braintreegateway.com域名的TLS证书 - 编写正常的Stub规则即可,不需要额外匹配主机头
注意:该方案会影响当前主机所有发往Braintree沙箱地址的请求,仅适合纯测试环境使用
内容的提问来源于stack exchange,提问作者JoeyHolloway
相关产品推荐
相关产品推荐

