JavaScript单元测试核心是写小而隔离的用例验证逻辑正确性;主流框架有Jest(React事实标准)、Vitest(Vite系快且TS友好)和Jasmine(老牌轻量);需掌握Mock、异步测试、覆盖率和环境隔离。

JavaScript 单元测试的核心是:写小、可隔离的测试用例,验证函数或模块在给定输入下是否返回预期输出。不需要运行整个应用,也不依赖 DOM 或网络,重点是逻辑正确性。
主流单元测试框架有哪些
目前最常用、生态最成熟的有三个:
- Jest:Facebook 开源,开箱即用(内置断言、Mock、覆盖率、快照),配置简单,React 项目事实标准
- Vitest:基于 Vite 构建,速度极快,API 与 Jest 高度兼容,适合 Vue、React、TS 项目,原生支持 ESM 和 TypeScript
- Jasmine:老牌框架,语法简洁(describe/it/expect),不依赖其他工具,但需自行搭配 Karma 或其他运行器做浏览器测试
一个最简 Jest 测试示例
假设有工具函数 sum.js:
对应测试文件 sum.test.js:
立即学习“Java免费学习笔记(深入)”;
import { sum } from './sum.js';test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
执行 npx jest 即可运行并看到通过结果。
关键能力你得会用
-
Mock 函数:用
jest.fn()替换依赖(如 API 调用),控制返回值并断言是否被调用 -
测试异步逻辑:支持
async/await、Promise、setTimeout,配合jest.useFakeTimers()控制时间 -
覆盖率检查:Jest 默认生成覆盖率报告(语句、分支、函数、行),加
--coverage参数即可启用 - 测试环境隔离:每个测试用例默认独立运行,变量、Mock 不互相污染
怎么选框架
- 新项目、尤其用 React/Vite/Vue —— 直接选 Vitest(启动快、TS 友好、配置少)
- 已有大型 Jest 项目或团队熟悉 Jest —— 继续用 Jest,迁移成本低
- 想轻量、纯前端、不打包 —— 可考虑 Jasmine + Karma,但维护成本略高











