标准答案
- Stub 提供固定或可配置响应,适合验证调用方在成功、失败、超时等分支的行为。
- Mock 通常包含交互期望,例如某方法是否按指定参数被调用,适合单元测试中验证协作关系。
- Fake 是可工作的简化实现,例如内存仓库、假支付服务或本地消息队列,适合集成测试和开发环境快速运行。
- Sandbox 是提供接近真实协议、认证和副作用隔离的外部环境,适合第三方支付、云服务和开放平台的联调验证。
- 替身测试不能完全代替契约测试和端到端验证;外部接口字段、签名、限流和异步行为仍需要在真实或 Sandbox 环境中定期确认。
题目解析
选择替身的关键是要验证什么。只测业务分支时 Stub 足够;要验证真实协议兼容时必须接近真实服务。
Fake 如果长期和生产实现分叉,会制造“测试通过、线上失败”的假信心,需要明确维护边界。
常见误区
- 把所有测试都连接真实第三方生产环境。
- 只依赖 Mock,完全不验证真实接口契约。
- 把 Fake 当作生产行为的精确复制,却不维护其差异。