API Mock 与 Stub 环境是什么
API Mock/Stub 环境用可控的模拟服务替代真实依赖:上游未就绪、第三方收费或不可控、异常分支难以触发时,用 WireMock、MockServer 或契约工具返回预置响应,让前后端与测试流程不被阻塞。它不是权宜之计而是工程手段,但前提是契约同步——模拟的行为要跟着真实接口走,否则测的是假象。
基本信息
| 典型工具 | WireMock、MockServer、Prism、Mountebank 等 |
|---|---|
| 接入方式 | 独立进程、容器或进程内启停,按 URL 前缀分流 |
| 模拟能力 | 固定响应、状态码与延时、动态模板、故障注入(超时与断连) |
| 契约来源 | 优先从接口契约(OpenAPI 等)生成,减少手工漂移 |
| 数据管理 | 桩响应与用例数据一起版本化,可回放历史流量 |
| 退出机制 | 真实依赖就绪后回归真联调,避免长期停留在模拟态 |
典型使用场景
- 并行开发:后端未就绪时前端先按契约联调,压缩等待时间。
- 异常注入:构造超时、限流、脏数据响应,验证容错与降级逻辑。
- 第三方依赖:计费、短信、实名等外部服务用桩替代,降低测试成本。
- 稳定性测试:依赖不稳定时用桩隔离,保证测试本身可重复。
- 契约验证:用契约生成桩并核对真实实现,尽早发现契约漂移。
桩与真实服务的边界
| 维度 | 适合用桩 | 必须回归真实 |
|---|---|---|
| 开发联调 | 依赖未就绪或按次计费 | 发布前关键链路联调 |
| 异常场景 | 难以稳定复现的故障 | 真实故障演练定期进行 |
| 性能 | 桩不反映真实容量 | 性能结论以真实依赖为准 |
| 数据一致性 | 桩返回固定数据 | 涉及多库事务必须用真实环境 |
桩是契约的执行体:接口定义变更时,桩与用例要在同一个变更里更新。
警惕绿色假象:全部依赖都是桩的流水线全绿,不代表联调链路没问题。
别让模拟环境变成唯一环境:发布前必须有一轮对着真实依赖的端到端验证。