JavaScript单元测试核心是验证输入输出、隔离代码、快速反馈;主流框架中Jest开箱即用适合React,Vitest启动快兼容Jest语法适配Vite项目,Mocha轻量需手动组合工具。

JavaScript单元测试的核心是验证函数或方法在给定输入下是否产生预期输出,关键在于隔离被测代码、用断言检查行为、快速反馈问题。选对框架能大幅降低编写和维护成本。
主流测试框架怎么选
当前最常用的是 Jest、Vitest 和 Mocha,它们定位不同,适合不同场景:
- Jest:开箱即用,内置断言、Mock、覆盖率报告和快照测试,React 项目默认首选,配置极少就能跑起来
- Vitest:基于 Vite 构建,启动极快,语法与 Jest 高度兼容,特别适合用 Vite 的 Vue/React/Svelte 项目
- Mocha:轻量灵活,本身只管运行测试,需手动搭配 Chai(断言)、Sinon(Mock)等库,适合需要精细控制测试环境的团队
一个真实可运行的 Jest 示例
只需两步就能开始测试:
- 把测试文件命名为 xxx.test.js 或 xxx.spec.js
- 写一个基础断言,比如验证加法函数:
test('adds 1 + 2 to equal 3', () => {
expect(add(1, 2)).toBe(3);
});
运行 npx jest 就能看到结果。它会自动识别所有 .test.js 文件,不需要额外配置。
立即学习“Java免费学习笔记(深入)”;
测试不是只写 assert
真正有效的单元测试要注意三点:
- 每个测试用例只验证一个行为,比如“空字符串返回空”、“数字输入抛出错误”要分开写
- 用
beforeEach或jest.mock()隔离外部依赖(如 API 调用、定时器、DOM 操作) - 覆盖边界情况:null、undefined、负数、超长字符串、异步失败路径
其他值得了解的框架
虽然使用率不如前三者高,但在特定场景仍有优势:
- Jasmine:自带断言和 BDD 语法(describe/it),不依赖 Node.js,适合老项目或浏览器内直接运行
- AVA:并发执行测试,速度快,天然支持 ES modules 和顶层 await,适合追求 CI 速度的团队
- Karma:在真实浏览器中跑测试,适合需要多端兼容性验证的大型项目,但配置较重










