用途:Vitest 是 Vite 原生的测试框架,适合为 Vite 驱动的 React、Vue、Svelte、Solid 及 Node.js 项目编写快速的单元测试与集成测试,也可作为 Jest 的替代方案迁移使用。
主要能力:与开发环境共用 vite.config.ts 中的插件、别名和 CSS 管线;提供与 Jest 一致的 describe、it、expect 和 vi API;支持即时 watch 模式,源码变更后仅重跑受影响测试;原生支持 TypeScript 与 JSX,无需 ts-jest 或 Babel 等额外转译;提供 vi.fn()、vi.mock() 等模块与计时器 Mock 能力;支持源码内测试、快照和覆盖率报告。
使用方式:在 vite.config.ts 或 vitest.config.ts 的 test 字段中配置 globals、environment、setupFiles、alias、coverage 等选项;测试文件通过 import { expect, test } from "vitest" 编写;可用 vi.mock 在模块层替换依赖;纯工具函数可使用 import.meta.vitest 进行源码内测试。示例配置见资料中的 vite.config.ts 与 vitest.config.ts 代码。
适用场景:需要与 Vite 构建链保持一致的现代前端或 Node 项目、从 Jest 迁移、希望获得快速 watch 反馈、或希望免除独立转译管线的团队。
限制与常见问题:路径别名未在 vite.config.ts 中同步会导致 Failed to resolve import,可用 vite-tsconfig-paths 插件;未配置 happy-dom 或 jsdom 时测试 DOM 会报 document is not defined,可在文件顶部设置 // @vitest-environment jsdom 或写入配置;vi.mock 工厂内引用外部变量会报未提升错误,需内联实现或使用 vi.hoisted;watch 模式下应调用 vi.restoreAllMocks() 避免测试污染。资料未提供收费标准、平台支持范围等更多信息。