为什么选择 Vitest
注意
本指南假设您熟悉 Vite。 了解更多信息的一个好方法是阅读 Vite 指南 和观看 使用 ViteJS 的下一代前端工具 这个视频,其中 Evan You 演示并解释了主要概念。
Vite 原生测试运行器的必要性
Vite 开箱即用地支持常见的 Web 模式,并提供诸如 glob 导入、SSR 原语等功能,以及丰富的插件和集成,共同构建了一个充满活力的生态系统。其开发和构建流程是其成功的基石。在文档方面,Vite 驱动的 SSG(静态站点生成器)提供了多种选择。然而,Vite 的单元测试解决方案一直不够完善。像 Jest 这样的现有方案是在不同的背景下创建的。 Jest 和 Vite 之间存在大量功能重复,迫使用户配置两套不同的流程。
在测试期间使用 Vite 开发服务器来转换文件,可以创建一个简洁高效的测试运行器。该运行器无需处理复杂的源文件转换,从而能够专注于提供最佳的 DX(开发者体验)。测试运行器使用与应用程序相同的配置(通过 vite.config.js
),并在开发、构建和测试期间共享一个统一的转换管道。它可以通过相同的插件 API 进行扩展,使您和您的工具维护者能够提供与 Vite 的深度集成。它是一个从一开始就为 Vite 量身打造的工具,充分利用了 Vite 在 DX 方面的改进,例如即时热模块重载(HMR)。 这就是 Vitest,一个由 Vite 驱动的极速单元测试框架。
鉴于 Jest 的广泛采用,Vitest 提供了一个兼容的 API,允许您在大多数项目中将其用作即插即用方案。它还包括设置单元测试时所需的最常见功能(模拟、快照、覆盖率)。Vitest 非常注重性能,并使用 Worker 线程尽可能并行运行。在某些情况下,测试运行速度提高了一个数量级。默认启用 Watch 模式,这与 Vite 倡导的“开发优先”体验相契合。尽管在开发者体验方面有这些改进,Vitest 仍然通过精选依赖项(或直接内联所需代码)来保持轻量级。
Vitest 的目标是成为 Vite 项目的首选测试运行器,即使对于不使用 Vite 的项目,它也是一个可靠的选择。
继续阅读 入门指南
Vitest 与 X 有何不同?
有关 Vitest 与其他类似工具的详细比较,请参阅 比较 部分。