Repolode
mitsuhiko

mitsuhiko/insta

一个 Rust 快照测试库,将值与已保存的参考快照对比,并提供审查变更的工具。

Star
2,979
Fork
168
未关闭 Issue
78
最近提交
15天前

这是什么?

insta 是一个面向 Rust 的快照测试库。快照测试会把一个值与已保存的参考快照进行比对,类似 assert_eq!,但更适合结构复杂、体积较大或经常变化的输出。快照发生变化时测试会失败,开发者可以审查新输出并决定是否接受。

快照既可以保存为独立的 .snap 文件,也可以直接内联在源代码中。配套的命令行工具 cargo-insta 用于审查和更新快照。VS Code 扩展则提供 .snap 文件的语法高亮、快照审查和跳转到定义等功能。

insta 使用 similar 库进行差异比对,similar-asserts 库则可以让普通的 assert_eq! 比较也输出同样的内联差异。

核心功能

  • 01支持对 Debug 等输出进行快照断言。
  • 02支持将快照内联保存在 Rust 源文件中。
  • 03提供 cargo-insta 命令行工具,用于审查和更新快照。
  • 04提供 VS Code 扩展,用于查看和审查 .snap 文件。
  • 05失败时通过 similar 库显示内联差异。

适用场景

  • 测试结构复杂的数据或解析器输出,避免手写期望值的繁琐。
  • 捕获随时间演变的输出中非预期的变化。
  • 将快照变更纳入代码审查流程。

快速上手

  1. 1

    在 Cargo.toml 中将 insta crate 添加为开发依赖

  2. 2

    编写一个测试,对某个值调用 insta::assert_debug_snapshot!

  3. 3

    安装配套工具 cargo-insta 以审阅快照

收录于专题

标签

常见问题

insta 是什么?
一个 Rust 快照测试库,将值与已保存的参考快照对比,并提供审查变更的工具。 insta 是一个面向 Rust 的快照测试库。快照测试会把一个值与已保存的参考快照进行比对,类似 assert_eq!,但更适合结构复杂、体积较大或经常变化的输出。快照发生变化时测试会失败,开发者可以审查新输出并决定是否接受。
insta 可以免费使用吗?用的什么许可证?
insta 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
insta 还在维护吗?
活跃维护中。insta 最近一次提交是在 2026年10月10日。
insta 适合用来做什么?
测试结构复杂的数据或解析器输出,避免手写期望值的繁琐。 捕获随时间演变的输出中非预期的变化。 将快照变更纳入代码审查流程。
insta 怎么安装和运行?
在 Cargo.toml 中将 insta crate 添加为开发依赖 编写一个测试,对某个值调用 insta::assert_debug_snapshot! 安装配套工具 cargo-insta 以审阅快照
在哪里获取 insta?
源代码和安装说明在 GitHub 上:https://github.com/mitsuhiko/insta

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目