You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WireMock指定9999端口却尝试连接8080端口导致连接拒绝的问题排查

WireMock指定9999端口却尝试连接8080端口导致连接拒绝的问题排查

这个问题其实是WireMock客户端默认配置和你启动的服务器实例不匹配导致的,我来帮你拆解一下原因和解决方案:

问题根源

你确实在setUp()里启动了端口为9999的WireMockServer,但你代码中使用的WireMock.listAllStubMappings()、stubFor()这些静态方法,默认是连接localhost:8080的WireMock服务(这是WireMock客户端的默认端口),和你自己启动的9999端口服务器完全是两个独立的目标,所以才会出现连接8080被拒绝的错误。

两种解决方案

方案一:配置静态WireMock客户端指向你的服务器

在启动WireMockServer之后,添加一行代码配置静态客户端的目标地址和端口,让它和你的服务器对齐:

@BeforeAll
public static void setUp() {
    // Start WireMock server with the desired hostname and port
    wireMockServer = new WireMockServer(wireMockConfig().port(9999).bindAddress("localhost"));
    wireMockServer.start();
    // 配置静态WireMock客户端指向我们的服务器端口
    WireMock.configureFor("localhost", 9999);
}

这样所有静态的WireMock方法都会使用你指定的9999端口,不会再访问默认的8080了。

方案二:直接使用WireMockServer实例操作(更推荐)

既然你已经创建了wireMockServer实例,直接用它来管理stub和查询映射,完全绕开静态客户端的默认配置:

@Test
@SneakyThrows
void onlyPath_localhost() {
    // 使用服务器实例查询stub映射,而不是静态WireMock类
    ListStubMappingsResult stubslist = wireMockServer.listAllStubMappings();
    System.err.println("stubslist.getMappings().size(): " + stubslist.getMappings().size());
    System.err.println("stubslist.getMappings(): " + stubslist.getMappings());

    HttpRequest request;
    HttpResponse<String> response;

    // 使用服务器实例创建stub,而不是静态stubFor方法
    wireMockServer.stubFor(get("/get").willReturn(ok("Hello")));

    request = HttpRequest.newBuilder()
            .uri(new URI("http://localhost:9999/get"))
            .version(HttpClient.Version.HTTP_2)
            .GET()
            .build();
    response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());

    Assertions.assertEquals("Hello", response.body());
}

这种方式更直观,直接绑定到你启动的服务器实例,避免了静态配置不一致的问题,后续维护也更清晰。

验证效果

修改完成后,无论是查询stub映射还是发送请求,都会正确指向9999端口的WireMockServer,不会再出现连接8080被拒绝的错误。

备注:内容来源于stack exchange,提问作者CodeBot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:54:33