SuperAPI AI 工具集

testing-anti-patterns

测试与质量

查看项目

更新于 10-16 03:17

技能介绍

用途:在编写或修改测试、添加 mock,或想让生产代码加入仅测试用方法时,用来避免测试 mock 行为与污染生产代码。核心原则:测试代码做什么,而不是 mock 做什么。

主要能力(五类反模式与修正):

  1. 测试 mock 行为:断言 mock 元素存在无法说明真实行为。修正为测试真实组件,或对必须 mock 的组件不做断言,转而测试其所在组件的真实行为。
  2. 生产代码中的仅测试用方法:如仅为清理而添加 destroy(),会污染生产类且误用有风险。应把清理逻辑放入 test-utils 之类的测试工具中。
  3. 未理解依赖就 mock:高层 mock 可能抹掉测试所依赖的副作用。应先在真实实现上运行测试,观察实际依赖后,再在正确的较低层级做最小 mock。
  4. mock 不完整:只填部分字段会隐藏结构假设,下游访问缺失字段时静默失败。应镜像真实 API 的完整结构,包含所有可能被下游消费的字段。
  5. 把集成测试当补做事项:测试属于实现的一部分,应与实现同步编写,验证行为后再宣称完成。

使用方式:在每个断言、添加生产方法、创建 mock、决定 mock 层级前,先经过文中的 Gate Function 提问自检;出现危险信号(断言 *-mock 测试 ID、方法只在测试文件中被调用、mock 设置超过测试一半、移除 mock 后测试失败、无法解释为何需要 mock、为求保险而 mock)时停止并重新评估。

适用场景:单元测试与集成测试设计、mock 策略评审、代码审查中识别测试坏味道。

限制:资料未提供具体语言或框架绑定、安装命令、工具集成方式与平台信息;示例基于 JavaScript/TypeScript 风格伪代码。当 mock 过于复杂时,可考虑用真实组件做集成测试。