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