用途:在编写或修改测试、添加 mock,或想把仅测试用的方法塞进生产代码时,用来识别并规避常见测试反模式。核心原则是测试代码真实行为,而非 mock 行为;mock 只是隔离手段,不是被测对象。
主要能力:列出并纠正五类反模式。一是测试 mock 行为,例如断言 sidebar-mock 是否存在;应改为测试真实组件或取消 mock。二是把仅测试使用的方法(如 destroy)加入生产类;应移到 test-utils 中。三是不理解依赖就 mock,可能屏蔽测试依赖的副作用,导致重复检测等逻辑失效;应先理解真实方法的副作用,在正确层级做最小 mock。四是残缺 mock,只写自己以为需要的字段,隐藏结构假设,造成测试通过但集成失败;应完整镜像真实 API 返回结构。五是把集成测试当作事后补充,实现完成即宣称就绪;应遵循 TDD 循环(先写失败测试、实现、重构,再宣称完成)。
使用方式:文中给出“门控”自检问题,在断言 mock 元素、往生产类加方法、执行 mock、创建 mock 响应等动作前先停下自问,并给出正反代码对照与快速参考表。若 mock 设置比测试逻辑还长、测试因移除 mock 而失败、无法解释为何需要 mock,或只是想“保险起见”而 mock,都是警示信号,可考虑改用真实组件的集成测试。
适用场景:单元测试与集成测试设计、代码评审、TDD 工作流,尤其是使用 Jest、Vitest 等 mock 能力较强的框架时。
限制:资料未提供具体安装命令、运行命令、依赖版本或平台支持信息,也暂未提供收费、价格与效果数据;内容为原则性指导,实际取舍需结合项目情况判断。