WireMock 是什么
WireMock 以 HTTP 桩服务替代外部接口:用 JSON 映射声明「请求匹配加响应返回」,可模拟延迟、错误与各类状态码;Java 生态常用,也支持独立进程与容器方式运行。桩让集成测试摆脱外部依赖,但桩与真实服务的漂移需要治理——否则测试全绿,线上照崩。
基本信息
| 定位 | HTTP 桩服务,模拟外部依赖行为 |
|---|---|
| 映射声明 | 请求匹配(方法、路径、头、体)加响应定义 |
| 模拟能力 | 延迟、错误、状态码、故障注入 |
| 运行方式 | Java 进程、独立 jar、容器 |
| 管理接口 | /__admin 运行时增改映射,动态调整 |
| 录制能力 | 代理模式可从真实服务录制生成映射草稿 |
| 匹配优先级 | 多条映射命中时优先级要显式设计 |
| 数据管理 | 桩数据按用例隔离,避免相互污染 |
映射示例
映射示例
{
"request": { "method": "GET", "url": "/api/ping" },
"response": {
"status": 200,
"jsonBody": { "ok": true },
"fixedDelayMilliseconds": 100
}
}
// 管理接口 /__admin 支持运行时增改映射典型使用场景
- 集成测试:外部依赖不稳定或收费时用桩替代。
- 故障演练:注入延迟与错误,验证熔断降级。
- 前端联调:后端未就绪时先按契约桩化。
- 边界复现:模拟超时、502、429 等异常响应。
- 性能隔离:压测时桩化非目标依赖,聚焦被测服务。
- 契约同步:桩映射与接口契约双向核对。
- 录制回放:用代理抓取真实响应生成映射草稿。
- 契约巡检:定时用真实服务响应对比桩映射。
- 故障基线:把常用故障场景沉淀成可复用映射。
桩响应与真实服务长期不校对,契约漂移后测试仍然全绿。
多份映射匹配条件重叠时,命中顺序不确定会导致结果不可复现。
故障注入(延迟、错误)要限制在测试环境,防止误配置影响联调环境。
映射文件纳入版本库:评审与回滚都有依据。