单元测试
单元测试验证“最小单元”(一个函数、一个模块)的行为是否符合预期:给输入、断言输出。前端主流工具是 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 的安全网。




