基本快照
快照测试使用.toMatchSnapshot() 匹配器编写:
test.ts
expect 的参数,并将其写入测试文件旁边的 __snapshots__ 目录中的快照文件。
快照文件
首次运行后,Bun 会创建:目录结构
__snapshots__/snap.test.ts.snap
更新快照
使用以下命令重新生成快照:terminal
内联快照
对于较小的值,使用.toMatchInlineSnapshot()。内联快照直接存储在你的测试文件中:
test.ts
test.ts
使用内联快照
- 使用
.toMatchInlineSnapshot()编写测试 - 运行一次测试
- Bun 会自动用快照更新你的测试文件
- 在后续运行中,Bun 会将值与内联快照进行比较
错误快照
你也可以使用.toThrowErrorMatchingSnapshot() 和 .toThrowErrorMatchingInlineSnapshot() 对错误消息进行快照:
test.ts
test.ts
高级快照用法
复杂对象
快照非常适合复杂的嵌套对象:test.ts
数组快照
数组也非常适合快照测试:test.ts
函数输出快照
对函数的输出进行快照:test.ts
React 组件快照
快照非常适合 React 组件:test.ts
属性匹配器
对于在测试运行之间变化的数值(如时间戳或 ID),请使用属性匹配器:test.ts
快照文件
最佳实践
保持快照小巧
test.ts
使用描述性测试名称
test.ts
分组相关快照
test.ts
处理动态数据
test.ts
管理快照
审查快照变更
当快照发生变化时,请仔细审查:terminal
组织大型快照文件
对于大型项目,考虑组织测试以保持快照文件可管理:directory structure
故障排除
快照失败
当快照失败时,你会看到差异:diff
- 有意的更改(使用
--update-snapshots更新) - 无意的更改(修复代码)
- 动态数据(使用属性匹配器)
- 环境差异(规范化数据)
平台差异
注意平台特定的差异:test.ts