vitest 是轻量、快速、原生支持 esm/ts 的 js 单元测试框架,兼容 jest api;安装后配置 scripts,编写 .test.js 文件,用 expect 断言、describe 分组、async 处理异步,支持 watch 和覆盖率。

在 JS 项目中使用 Vitest 编写基础单元测试,核心是轻量接入、快速上手、贴近开发流程。它兼容 Jest API,但启动更快、原生支持 ESM 和 TypeScript,无需额外配置转译器。
安装与初始化
在已有项目中(支持 npm / pnpm / yarn),执行:
- npm install -D vitest(或 pnpm add -D vitest)
- 在 package.json 的 scripts 中添加:
"test": "vitest","test:watch": "vitest --watch","test:coverage": "vitest run --coverage" - 可选:新建 vitest.config.js(最小化配置通常非必需):
export default { test: { include: ['src/**/*.{test,spec}.{js,ts}'] } }
编写第一个测试文件
在 src/utils/math.js 中定义一个函数:
export function add(a, b) { return a + b; }
对应创建 src/utils/math.test.js:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
import { expect, test } from 'vitest';
import { add } from './math';
test('add returns correct sum', () => {
expect(add(2, 3)).toBe(5);
expect(add(-1, 1)).toBe(0);
});
Vitest 会自动识别 .test.js 或 .spec.js 后缀文件并运行。
常用断言与测试结构
保持测试简洁清晰,推荐按“输入-操作-断言”组织:
-
基本断言:
expect(x).toBe(y)(严格相等)、.toEqual(y)(深比较对象)、.toBeTruthy()、.toContain('str') -
异步测试:直接
async/await,无需done回调test('fetches user', async () => { const user = await fetchUser(); expect(user.name).toBe('Alice'); }); -
分组测试:用
describe()划分逻辑块,提升可读性describe('math operations', () => { test('add works', () => { ... }); test('subtract works', () => { ... }); });
运行与调试
终端中执行命令即可启动:
-
npm test—— 一次性运行所有测试 -
npm run test:watch—— 监听文件变化,自动重跑相关测试(开发时最常用) -
npm run test:coverage—— 生成覆盖率报告(需安装vitest --coverage自带的 istanbul 支持) - 在 VS Code 中安装 Vitest Runner 插件,可点击测试旁的「▶」直接运行单个用例










