为什么选择 Vitest
注意
本指南假设您熟悉 Vite。建议您首先阅读 为什么选择 Vite 指南,并观看 尤雨溪 演示并解释主要概念的直播——使用 ViteJS 构建下一代前端工具,以便更好地理解。
对 Vite 原生测试运行器的需求
Vite 对常见 Web 模式的开箱即用支持、诸如 glob 导入和 SSR 原语等功能,以及其众多的插件和集成,正在共同培育一个充满活力的生态系统。其开发和构建流程是其成功的关键。在文档方面,已经有多种由 Vite 提供支持的基于 SSG 的替代方案。然而,Vite 在单元测试方面的定位一直不明确。像 Jest 这样的现有选项是在不同的背景下创建的。Jest 和 Vite 之间存在大量重复功能,迫使用户配置两套不同的流程。
在测试期间,利用 Vite 开发服务器转换文件,可以创建一个简单的测试运行器。该运行器无需处理源文件转换的复杂性,只需专注于在测试期间提供最佳的开发体验(DX)。这个测试运行器使用与您的应用程序相同的配置(通过 vite.config.js
),并在开发、构建和测试时共享一个通用的转换管道。它可以通过相同的插件 API 进行扩展,让您和您的工具维护者能够提供与 Vite 的一流集成。这是一个从一开始就充分考虑 Vite 的工具,它利用了 Vite 在开发体验方面的改进,例如即时热模块重载(HMR)。这就是 Vitest,一个由 Vite 提供支持的下一代测试框架。
鉴于 Jest 的广泛使用,Vitest 提供了一个兼容的 API,允许您在大多数项目中将其作为直接替代品使用。它还包括设置单元测试所需的最常见功能(模拟、快照、覆盖率)。Vitest 非常注重性能,并使用 Worker 线程尽可能并行运行。在一些迁移案例中,测试运行速度提升了一个数量级。默认启用监听模式,这与 Vite 推崇的开发优先体验保持一致。尽管在开发体验方面有诸多改进,Vitest 仍通过仔细选择依赖项(或直接内联所需部分)来保持轻量级。
Vitest 旨在成为 Vite 项目的首选测试运行器,即使对于不使用 Vite 的项目,它也是一个可靠的替代方案。
继续阅读 入门指南
Vitest 与 X 有何不同?
您可以查看 比较 部分,了解 Vitest 与其他类似工具的更多详细信息。