JavaScript怎样进行单元测试_JavaScript测试框架有哪些推荐

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 配置。

写一个真实可用的测试示例

以加法函数为例:

// 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 替代

不复杂但容易忽略