单元测试验证单个函数或组件逻辑是否正确,隔离依赖只测输入输出;集成测试验证多个模块协作是否正常,覆盖用户路径并允许真实DOM操作。

JavaScript 测试主要靠单元测试和集成测试来保障质量,两者目标不同、范围不同、写法也不同。
单元测试:验证单个函数或组件的逻辑是否正确
单元测试聚焦最小可测单元(比如一个工具函数、一个 React 组件的渲染逻辑),隔离外部依赖(如 API 调用、定时器、DOM 操作),只关注“输入 → 输出”是否符合预期。
常用工具:Jest、Vitest、Jasmine。
- 用 mock 替换真实依赖(例如用
jest.mock('axios')拦截请求) - 测试边界值和异常路径(如传入 null、空数组、负数时是否报错或返回合理结果)
- 不操作真实 DOM(React 可用
@testing-library/react的render+screen做轻量 DOM 断言,但仍属单元测试范畴)
集成测试:验证多个模块协作是否正常
集成测试把几个已通过单元测试的模块组合起来,检查它们之间交互是否顺畅,比如组件 + API + 状态管理一起跑通一个用户登录流程。
立即学习“Java免费学习笔记(深入)”;
常用工具:Cypress、Playwright、Testing Library + Jest(配合真实环境)。
- 不 mock 接口或状态逻辑,而是启动真实服务(或用 mock server 如 MSW 模拟后端响应)
- 覆盖关键用户路径(如“填写表单 → 提交 → 显示成功提示 → 跳转页面”)
- 允许真实 DOM 操作和浏览器行为(点击、输入、等待异步完成)
怎么选?看你要回答什么问题
单元测试回答:“这个函数自己有没有 bug?”
集成测试回答:“这几个东西合在一起,用户能不能顺利完成任务?”
- 开发新功能时,先写单元测试保证基础逻辑可靠
- 上线前或重构后,补集成测试确认端到端流程没断
- CI 流程中,单元测试快、反馈早;集成测试慢、但更贴近真实场景
小提醒:别混淆“端到端测试”和“集成测试”
端到端(E2E)测试是集成测试的子集,但范围更大——它模拟真实用户从打开浏览器到完成业务目标的全过程,通常跨系统(前端 + 后端 + 第三方服务)。而前端集成测试一般限定在本项目内多个模块的协作。
不复杂但容易忽略。











