序列化再比对
用固定 props 渲染组件并把树序列化为稳定字符串。快照即真相,结构变更产生 diff 使测试失败。
const tree = render(<Card title="Hello" />);
expect(serialize(tree)).toMatchInlineSnapshot();
有意才更新
仅在有意变更时运行 vitest -u 更新快照。diff 进入 PR,评审者能看到结构变更。意外改名或误删包裹层会在合并前失败。
git diff -- "**/__snapshots__/*"
预期结果
结构变更以可读 diff 失败,有意变更更新快照并在 PR 显示,易变值被遮蔽以免假 diff。小组件应隔离快照以保持文件可读。快照只确认结构不确认行为,组件可能渲染错误结构却仍匹配陈旧快照;更新快照若不审 diff 会绕过评审,应把快照文件设为必审。