SuperAPI AI 工具集

eng-testing-anti-patterns

测试与质量

查看项目

更新于 10-16 06:42

技能介绍

用途:该技能在编写或修改测试、添加 mock、或考虑加入仅供测试使用的钩子时启用,用于约束测试与 mock 的使用方式,防止常见测试反模式。核心原则是:测试必须验证真实行为而非 mock 行为,mock 只是隔离工具,绝不是被测对象。

主要能力与铁律:包含五条铁律——绝不测试 mock 行为、绝不向生产类添加测试专用方法、绝不在不理解依赖的情况下 mock、绝不交付不完整的 mock、绝不把集成测试当作事后补做。同时给出五类反模式及其修复方式和判断门槛。反模式一:测试 mock 行为,例如 mock 掉 Sidebar 后断言 sidebar-mock 存在,修复为测试真实组件或只断言行为;门槛是先自问“我在测真实行为还是只测 mock”。反模式二:生产类中出现仅测试使用的方法,如只在测试里调用的 Session.destroy(),修复为把清理辅助逻辑移到测试工具中。反模式三:盲目 mock,可能 mock 掉同时写配置的高层方法导致重复检测失败,应只 mock 慢速或外部部分,并先弄清真实方法的副作用、测试是否依赖这些副作用、是否完全理解依赖链,不确定时先用真实实现运行观察再最小化 mock。反模式四:不完整 mock,如只保留使用到的字段而下游需要 metadata.requestId,应镜像完整真实 schema。反模式五:集成测试事后补做,应遵循 TDD:先写失败测试、再实现、后重构。

使用方式与参考:提供快速对照表(对 mock 断言→测真实行为或取消 mock;仅测试方法→移入测试工具;盲目 mock→先理解依赖;部分 mock→匹配真实 API schema;无测试→走 TDD 循环)。还列出危险信号:断言中出现 *-mock、只被测试调用的方法、mock 搭建超过测试的 50%、移除 mock 后测试失败、以“以防万无一失”为由 mock。若 mock 搭建比测试逻辑还复杂,应重新考虑是否需要 mock,使用真实组件的集成测试可能更简单。

适用场景与限制:适用于编写、修改测试与 mock 的工程场景。资料未提供具体平台、语言、安装命令、配置细节或收费信息。