用途:这是一份面向编写或修改测试、添加 mock 时的反模式指南,核心原则是测试代码的真实行为,而不是 mock 的行为;mock 只用于隔离,不是被测对象。
主要能力:列出五类反模式及修正。一、测试 mock 行为:断言 mock 元素存在,只证明 mock 可用,应改为测试真实组件或取消 mock。二、生产类中加入仅测试用方法:如 destroy() 只在测试调用,会污染生产代码,应把清理逻辑放进测试工具。三、未理解依赖就 mock:mock 掉测试所依赖的副作用会导致测试因错误原因通过,应先理解副作用,在更低层做最小 mock。四、mock 不完整:只 mock 已知字段会隐藏结构假设,应完整镜像真实 API 返回结构。五、把集成测试当补做事项:测试是实现的组成部分,应与实现同步编写。
使用方式:文中给出若干“Gate Function”自查步骤,例如断言 mock 前先问“我在测真实行为还是 mock 存在”;添加生产方法前先问“是否只有测试用”;mock 前先弄清真实方法的副作用与测试依赖;创建 mock 响应前先核对真实 API 字段。还提供快速参考表与红旗信号,如断言 *-mock 测试 ID、方法只在测试文件调用、mock 设置超过测试一半、移除 mock 后测试失败、无法解释为何需要 mock。
适用场景:单元测试与集成测试设计、代码评审、重构测试时识别过度 mock。
限制:资料未提供具体语言、框架版本、安装命令或平台信息;示例使用 JavaScript/TypeScript 与 Vitest 风格语法,但未声明适用范围。