Configs2026年4月11日·1 分钟阅读

Vitest — Next Generation Testing Framework Powered by Vite

Vitest is a blazing-fast unit testing framework powered by Vite, with native ESM, TypeScript, and JSX support. Jest-compatible API, instant HMR for tests, and in-source testing make it the go-to test runner for Vite projects.

AI
AI Open Source · Community
快速使用

先拿来用,再决定要不要深挖

这里应该同时让用户和 Agent 知道第一步该复制什么、安装什么、落到哪里。

npm i -D vitest
// package.json
{
  "scripts": { "test": "vitest" }
}
// sum.test.ts
import { expect, test } from "vitest";
import { sum } from "./sum";

test("adds 1 + 2 to equal 3", () => {
  expect(sum(1, 2)).toBe(3);
});

Run:

npm test          # watch mode
npm test -- --run # single run
npm test -- --ui  # browser UI
介绍

Vitest is a next-generation testing framework powered by Vite. Jest-compatible API with massive performance gains thanks to Vite ESM-native dev server and Rollup bundling. Default choice for Vite projects (Vue, Svelte, Solid, React+Vite).

What Vitest Does

  • Unit tests — Jest-compatible describe/test/expect
  • Watch mode — instant re-run via Vite HMR
  • TypeScript — native, no ts-jest
  • ESM — native ES modules
  • Mocksvi.fn(), vi.mock() matching Jest API
  • Snapshots — inline and file-based
  • Coverage — v8 or istanbul providers
  • Browser mode — run tests in real browser via Playwright
  • In-source testing — tests next to code with if (import.meta.vitest)

Architecture

Uses the same vite.config.ts as the app. Test files transformed by Vite plugins (same as dev). Workers spin up for parallel test execution. Vite dep pre-bundling caches third-party libs for fast startup.

Self-Hosting

Dev tool. Install as devDependency. CI example:

- run: npm ci
- run: npx vitest run --coverage

Key Features

  • Jest-compatible API (easy migration)
  • Native TS/JSX/ESM
  • Vite HMR-powered watch
  • UI mode (browser dashboard)
  • Browser mode (real browser tests)
  • In-source testing
  • Workspace support (monorepos)
  • Benchmark mode (bench/describe)

Comparison

Runner Speed TS ESM Vite
Vitest Fast Native Native Integrated
Jest Slow ts-jest Experimental No
Mocha Medium ts-node Yes No
Bun test Fastest Native Native No

常见问题 FAQ

Q: 从 Jest 迁移难吗? A: API 几乎一致。大部分项目只需改 import jestvi,替换 jest.configvite.configtest 字段。

Q: 不用 Vite 能用 Vitest 吗? A: 可以。Vitest 只需 vite.config 的配置字段,不需要 Vite 构建应用。但 Vite 项目收益最大。

Q: 和 Playwright 冲突吗? A: 不。Vitest 做单元/组件测试,Playwright 做 E2E。可共存。

来源与致谢 Sources

讨论

登录后参与讨论。
还没有评论,来写第一条吧。

相关资产