dev.to | 📄 原文链接 | 2026-10-29 收录

测试会撒谎的四种方式:五百多个测试里的教训

来源:dev.to — 2026-10-28

📋 概述

作者花两周做了一个能回看任意历史日期状态的红酒酒窖应用,一个人加一个 AI agent,最后写了约 530 个测试。项目里四个真实 bug 有三个,对专门为它们所在功能写的检查完全隐形。他借实验室的词汇解释:一个实验需要正对照(证明方法能检出效应)和负对照(证明没有效应时它保持安静),而每一种假绿或假红,都是少了一个对照,或者把对照指错了地方。文中详述了三种:测不出失败的测试(断言「提议的声明不改变任何状态」,但同一层级按时间新旧取胜,删掉整段过滤逻辑测试照样绿)、永远失败的检查(扫密钥的正则把 @sanity/client 里的合法导出名 skipCrossDatasetReferenceValidation 当成 sk 密钥,每次干净构建都报红,然后被当成误报忽略),以及第三种最难发现——正负对照都在、断言也有效,只是编码了一份错误的契约。

🔑 核心要点

💡 金句

“When you convert an error, wrap it, don't replace it.”
译:转换错误时应该包装它,而不是把它替换掉。
← 返回 dev.to 首页