Vitest 是一个由 Vite 驱动的下一代测试框架。它提供与 Jest 兼容的 API,并开箱即用地支持原生 ESM、TypeScript 和 JSX。Vitest 与你的 Vite 应用共享同一套配置、转换器、解析器和插件。
主要特性:
- 原生 Vite:使用 Vite 的转换管线,实现类似 HMR 的快速测试更新
- 兼容 Jest:可作为大多数 Jest 测试套件的替代方案
- 智能监听模式:基于模块图只重新运行受影响的测试
- 原生支持 ESM、TypeScript、JSX,无需配置
- 多线程 worker,支持并行测试执行
- 通过 V8 或 Istanbul 提供内置覆盖率
- 快照测试、Mock 和 spy 工具
该技能基于 Vitest 3.x,生成于 2026-01-28。
核心(Core)
- 配置(Configuration):Vitest 与 Vite 配置集成、defineConfig 用法。参考:core-config
- CLI(CLI):命令行接口、命令与选项。参考:core-cli
- 测试 API(Test API):test/it 函数,以及 skip、only、concurrent 等修饰符。参考:core-test-api
- Describe API(Describe API):describe/suite,用于分组测试和嵌套套件。参考:core-describe
- Expect API(Expect API):使用 toBe、toEqual、匹配器和非对称匹配器进行断言。参考:core-expect
- 钩子(Hooks):beforeEach、afterEach、beforeAll、afterAll、aroundEach。参考:core-hooks
功能(Features)
- Mock(Mocking):使用 vi 工具对函数、模块、计时器、日期进行 Mock。参考:features-mocking
- 快照(Snapshots):使用 toMatchSnapshot 和内联快照进行快照测试。参考:features-snapshots
- 覆盖率(Coverage):使用 V8 或 Istanbul provider 进行代码覆盖率统计。参考:features-coverage
- 测试上下文(Test Context):测试夹具、context.expect、使用 test.extend 自定义夹具。参考:features-context
- 并发(Concurrency):并发测试、并行执行、分片。参考:features-concurrency
- 过滤(Filtering):按名称、文件模式、标签过滤测试。参考:features-filtering
高级(Advanced)
- Vi 工具(Vi Utilities):vi 辅助工具:mock、spyOn、fake timers、hoisted、waitFor。参考:advanced-vi
- 环境(Environments):测试环境:node、jsdom、happy-dom、自定义环境。参考:advanced-environments
- 类型测试(Type Testing):使用 expectTypeOf 和 assertType 进行类型层面的测试。参考:advanced-type-testing
- 项目(Projects):多项目工作区,每个项目使用不同配置。参考:advanced-projects