本地跑 jest 提示 3 snapshots obsolete,有人直接 -u 提交。之后快照里存的都是错误输出,断言永远通过。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
CI=true npx jest --ci # 本地确认改动后才允许更新 npx jest -u
更新快照把当前实际值写成期望值,等于让实现给自己出题。变更混在业务提交里,评审时没人看 .snap 的 diff。这一点先确认清楚,后面就不用反复试。
「快照测试被更新」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
具体做法是,CI 上禁止 -u 快照不匹配直接失败;快照文件单独提交 评审要求看 diff;只对稳定结构用快照 时间戳和随机 id 先脱敏;定期清掉 obsolete 快照 别留旧断言。
改完照着核一遍,把组件输出改错一个字段 CI 立刻红 快照 diff 里能看到那一行。
