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

如何对接运行在Docker中的Wiremock服务获取请求交互数据

解决方案

完全可以通过WireMock官方提供的远程客户端能力对接运行在Docker中的服务,无需在本地显式启动WireMock实例,具体实现方案如下:

方案1:直接使用已配置的静态API

你已经在代码中执行了WireMock.configureFor("localhost", 8080);,该配置已经将静态上下文绑定到了Docker中运行的WireMock服务,直接调用WireMock类的静态方法即可获取运行数据,示例如下:

// 获取所有交互请求记录
List<ServeEvent> allServeEvents = WireMock.getAllServeEvents();
// 检查WireMock服务运行状态
boolean isRunning = WireMock.isRunning();
// 清空历史请求记录(适合多测试用例场景下隔离数据)
WireMock.resetAll();

方案2:创建独立的远程WireMock客户端

如果需要同时对接多个WireMock服务,避免静态上下文的冲突,可以手动创建WireMock实例指向远端服务,示例如下:

// 初始化指向Docker中WireMock服务的客户端
WireMock remoteWireMock = new WireMock("localhost", 8080);
// 调用实例方法获取数据
List<ServeEvent> events = remoteWireMock.getAllServeEvents();

注意事项

  • 确保Docker中WireMock服务的8080端口已正确映射到本地,且网络可达
  • 项目依赖的WireMock版本尽量和Docker中运行的WireMock版本保持一致,避免出现接口兼容性问题
  • 若WireMock服务开启了API鉴权,配置时需要补充认证参数,示例:WireMock.configureFor("localhost", 8080, "你的认证令牌");

实际测试用例示例(JUnit5)

@Test
void verifyApiRequestToWireMock() {
    // 调用待测试的业务API
    businessApi.queryUserInfo(123);
    
    // 从远端WireMock拉取交互记录
    List<ServeEvent> serveEvents = WireMock.getAllServeEvents();
    
    // 验证请求符合预期
    assertEquals(1, serveEvents.size());
    ServeEvent receivedRequest = serveEvents.get(0);
    assertEquals("/user/info", receivedRequest.getRequest().getUrl());
    assertEquals("GET", receivedRequest.getRequest().getMethod().getName());
    assertEquals("123", receivedRequest.getRequest().queryParameter("id").firstValue());
}

内容的提问来源于stack exchange,提问作者CJDownUnder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:06:03