JavaScript单元测试核心是验证函数逻辑,Jest为首选框架;示例测试add函数覆盖正数、负数和零;需坚持单关注点、行为命名、测异常路径及mock外部依赖。

JavaScript 单元测试的核心是验证函数或方法在给定输入下是否产生预期输出,同时覆盖边界条件、错误路径和异步行为。它不依赖浏览器环境或 UI 渲染,专注逻辑本身。
选一个主流框架起步
对大多数现代项目,Jest 是首选:开箱即用、自动模拟(mock)、内置断言、快照测试、覆盖率报告一应俱全,尤其适合 React 和 Node.js 项目。安装只需:
npm install --save-dev jest- 在
package.json中添加:"test": "jest" - 把测试文件命名为
*.test.js或*.spec.js,Jest 会自动识别
其他成熟可选方案
Mocha + Chai + Sinon 组合适合需要高度定制的项目:
- Mocha 提供测试结构(
describe/it)和异步支持 - Chai 提供多种断言风格(
expect().to.equal()或assert.equal()) - Sinon 专用于创建 stub、spy 和 mock,控制外部依赖行为
Vitest 是新兴高性价比选择,特别适配 Vite 项目:启动极快、API 与 Jest 高度兼容、原生支持 ESM 和 TypeScript,且能复用 Vite 配置。
立即学习“Java免费学习笔记(深入)”;
写一个真实可用的测试示例
以加法函数为例:
// math.js export const add = (a, b) => a + b;
// math.test.js
import { add } from './math';
describe('add function', () => {
test('returns 5 when adding 2 and 3', () => {
expect(add(2, 3)).toBe(5);
});
test('handles negative numbers', () => {
expect(add(-1, -4)).toBe(-5);
});
test('works with zero', () => {
expect(add(0, 10)).toBe(10);
});
});
运行 npm test 即可看到结果。每个 test 是独立执行的,互不影响。
关键习惯要养成
- 每个测试只验证一个关注点,命名要描述行为(如
"throws error when denominator is zero") - 优先测试公共接口,不测私有工具函数(除非它逻辑复杂且易出错)
- 为异常路径写测试,比如除零、空输入、非法类型
- 避免在测试中调用真实 API 或读写本地存储——用 mock 替代
不复杂但容易忽略










