← 中文资源

简体中文版本

对虚拟 DOM 做快照测试以捕捉回归

将组件渲染为虚拟 DOM,把树序列化为稳定字符串,每次运行比对快照,结构变更即失败。

阅读英文原文

序列化再比对

用固定 props 渲染组件并把树序列化为稳定字符串。快照即真相,结构变更产生 diff 使测试失败。

const tree = render(<Card title="Hello" />);
expect(serialize(tree)).toMatchInlineSnapshot();

有意才更新

仅在有意变更时运行 vitest -u 更新快照。diff 进入 PR,评审者能看到结构变更。意外改名或误删包裹层会在合并前失败。

git diff -- "**/__snapshots__/*"

预期结果

结构变更以可读 diff 失败,有意变更更新快照并在 PR 显示,易变值被遮蔽以免假 diff。小组件应隔离快照以保持文件可读。快照只确认结构不确认行为,组件可能渲染错误结构却仍匹配陈旧快照;更新快照若不审 diff 会绕过评审,应把快照文件设为必审。