vitest 可无缝替代 jest:复用 vite 配置、api 完全兼容、启动更快、原生支持 esm;安装后配置 scripts 即可运行,仅少数场景需微调 mock 和全局变量。

直接用 Vitest 替代 Jest 跑 JavaScript 单元测试,核心是“复用 Vite 配置 + 保持 API 一致 + 少改代码”。如果你的项目已用 Vite,迁移几乎零配置;即使没用 Vite,Vitest 也能独立运行,启动更快、ESM 支持更原生。
安装与基础命令
只需两步就能跑起来:
- 安装依赖:
npm install -D vitest(或yarn add -D vitest) - 在
package.json的scripts中加一句:"test": "vitest" - 运行测试:
npm run test,它会自动查找.test.js、.spec.ts等后缀文件
配置继承(省掉重复 setup)
Vitest 不需要单独写 vitest.config.js——它默认读取你已有的 vite.config.ts,自动复用:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 路径别名(
alias),比如@/utils→src/utils,测试里 import 一样能解析 - CSS / Vue / React 插件,无需额外配
transform或setupFiles - TypeScript 类型检查和编译逻辑,开箱即用,不用装
ts-jest
语法兼容,几乎不用改测试代码
所有常用 API 和 Jest 完全一致:
-
describe、it(或test)、beforeEach、afterAll等生命周期函数照常使用 -
expect(...).toBe()、.toEqual()、.toThrow()等断言方法行为相同 - Mock 写法也高度相似:
vi.mock('./api')替代jest.mock('./api'),只是vi是 Vitest 的全局 mock 工具对象
常见适配点(注意这几处)
极少数地方需微调,主要是模块机制差异:
-
ESM 默认支持:Vitest 原生按 ESM 加载,遇到
export default或顶层await不报错;Jest 默认走 CommonJS,常需ts-jest转译 -
mock 行为更贴近 Node:比如
vi.mock()不提升到顶部,条件判断中可动态控制是否 mock;而jest.mock()是静态提升的,容易出意料 -
全局变量需显式声明:如用到
localStorage或fetch,建议在test块内用vi.stubGlobal('fetch', mockFn)替代global.fetch = ...
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










