如何基于主机名配置WireMock服务器并设置存根请求?
WireMock 配置相关问题解答
你的基础配置代码如下:
public void mock(){ WireMockServer wireMockServer = new WireMockServer(443); wireMockServer.start(); configureFor("localhost", 443); stubFor(post(urlEqualTo("/path/link")) .willReturn(aResponse().withBody("hello world").withStatus(200))); }
问题1:模拟HTTPS无端口主机名请求时,端口如何确定?
- HTTPS协议的默认端口是443,当请求为
https://apigeew-uat.company.net/path/link这类未指定端口的地址时,客户端会自动使用443端口与WireMock服务器建立连接。 - 你的WireMock实例刚好启动在443端口,只要客户端能将
apigeew-uat.company.net解析到WireMock所在的服务器(比如通过本地hosts映射),就能正常匹配你定义的stub规则。
问题2:configureFor的作用是什么?
configureFor是用来指定WireMock客户端API(比如stubFor、verify等)的目标服务端地址和端口。- 简单来说:
WireMockServer是运行的服务端实例,而stubFor这类方法属于客户端调用,configureFor就是告诉客户端要把stub配置、验证请求等操作发送到哪个WireMock服务端上。 - 如果不调用
configureFor,默认会连接localhost:8080,如果你的WireMock服务端启动在其他端口(比如你的代码里的443),stub规则就无法被正确注册到服务端,导致请求无法匹配。 - 你的代码里
configureFor("localhost", 443)就是让后续的stubFor把POST接口规则提交到本地443端口的WireMock服务端,确保服务端能识别并处理对应请求。
内容的提问来源于stack exchange,提问作者daniel
相关产品推荐
相关产品推荐

