前端工程化 词条目录
前端Wiki/前端工程化/深入/自动化测试

单元测试

单元测试验证“最小单元”(一个函数、一个模块)的行为是否符合预期:给输入、断言输出。前端主流工具是 Vitest(Vite 项目零配置)与 Jest(生态成熟),API 几乎相同:describe 分组、it 写用例、expect 断言。

值得测的是“有明确输入输出的逻辑”:工具函数(格式化日期、计算价格)、状态管理(store 的 action)、复杂组件交互。改一处代码跑一遍用例,立刻知道有没有改崩别人——这就是回归测试网。

  • 只测有明确输入/输出的逻辑:工具函数、store、关键算法
  • 覆盖率是参考不是目标:80% 覆盖率从不代表 80% 有效性
  • 先测会出 bug 的地方,再测经常改动的地方
测试
// src/utils/price.js —— 被测函数
export function totalPrice(items) {
  const sum = items.reduce((s, i) => s + i.price * i.qty, 0);
  return sum >= 100 ? sum * 0.9 : sum;    // 满 100 打九折
}

// test/price.test.js —— 测试文件(Vitest/Jest 通用写法)
import { describe, it, expect } from 'vitest';
import { totalPrice } from '../src/utils/price';

describe('totalPrice', () => {
  it('不满 100 元不打折', () => {
    expect(totalPrice([{ price: 30, qty: 2 }])).toBe(60);
  });
  it('满 100 元打九折', () => {
    expect(totalPrice([{ price: 60, qty: 2 }])).toBe(108);
  });
  it('空数组返回 0', () => {
    expect(totalPrice([])).toBe(0);
  });
});

// 运行:npx vitest(或 jest)—— 全绿 = 放心改
本节要点单元测试 = 输入 + 断言;优先测工具函数与核心逻辑,它是接住回归 bug 的安全网。
🔗 相关词条JavaScriptPromiseNode.js