这一章里,把测试看成“验收、消防和演练”。建筑图画得再美,不经过演练,真出事时照样会塌。
#单元测试
- Jest
- Vitest
- Pytest
- JUnit
它们解决的是:一个零件单独拿出来,工作对不对。
import { describe, it, expect } from 'vitest';
describe('sum', () => {
it('adds numbers', () => {
expect(1 + 2).toBe(3);
});
});其中常见分工是:
- Jest:Node / React 老牌默认测试网
- Vitest:Vite-native 的现代前端测试
- Pytest:Python 事实标准
- JUnit:JVM 世界标准测试框架
#端到端测试
- Playwright
- Cypress
它们解决的是:整条业务流程,从用户点击到结果出现,通不通。
import { test, expect } from '@playwright/test';
test('homepage', async ({ page }) => {
await page.goto('http://localhost:3000');
await expect(page.locator('h1')).toBeVisible();
});Playwright 更像城市交管总控台:
- 跨浏览器
- 隔离强
- 多项目矩阵强
Cypress 更像贴着前端现场飞的巡逻机:
- 调试体验强
- 前端开发者上手快
- 组件测试也好用
测试层次关系:
单元测试:检查一个零件
集成测试:检查几块零件接起来
E2E 测试:检查整条办事流程最实用的判断:
| 你要验证什么 | 更该用什么 |
|---|---|
| 函数、类、slice、service | Jest / Vitest / Pytest / JUnit |
| 数据库、消息队列、HTTP 服务接起来后是否能跑 | 集成测试 |
| 用户登录、下单、支付、权限流 | Playwright / Cypress |