第13章 测试与调试
16 分钟阅读
Chapter-13-Testing-And-Debugging
第13章:测试与调试
“测试?那是什么?能吃吗?”
如果你也是这么想的,那这章就是你的"觉醒时刻"。没有测试的代码就像没有安全带的赛车——可能跑得很快,但一出事就是大事。
这一章我们要聊的话题:Vitest 怎么写单元测试?Playwright 怎么写 E2E 测试?VS Code 怎么调试?Chrome DevTools 怎么用?GitHub Actions 怎么配置 CI?
准备好了吗?让我们一起告别"改完代码手动刷新浏览器"的时代!🧪
13.1 单元测试
13.1.1 Vitest 简介与安装
Vitest 是一个由 Vite 驱动的单元测试框架,由 Vue 官方团队成员 Anthony Fu 创建。它的特点是:
- 极速:和 Vite 一样快,因为使用了相同的 transform 机制
- 开箱即用:零配置,和 Vite 项目无缝集成
- TypeScript 支持:原生 TypeScript 支持
- HMR 支持:测试文件修改后自动重新运行
Vitest vs Jest vs Mocha:
| 框架 | 特点 | 与 Vite 集成 |
|---|---|---|
| Vitest | 极速,Vite 原生,Vue 官方推荐 | ⭐⭐⭐⭐⭐ |
| Jest | 老牌稳定,但较慢 | ⭐⭐ |
| Mocha | 灵活,但配置复杂 | ⭐⭐ |
安装 Vitest:
| |
13.1.2 编写第一个测试
Vitest 配置:
| |
| |
第一个测试:
| |
运行测试:
| |
13.1.3 测试命令配置
package.json 脚本配置:
| |
13.1.4 组件测试(Vue Testing Library)
Vue Testing Library 专注于测试组件的行为,而不是实现细节。
安装:
| |
Vue 组件测试:
| |
测试文件:
| |
13.1.5 组件测试(React Testing Library)
React Testing Library 的理念和 Vue Testing Library 一样:测试行为,而不是实现。
安装:
| |
React 组件测试:
| |
测试文件:
| |
13.1.6 覆盖率报告
配置覆盖率:
| |
覆盖率报告输出:
---------------------------|---------|----------|---------|---------|
File | % Stmts | % Branch | % Funcs | % Lines |
---------------------------|---------|----------|---------|---------|
src/utils/math.ts | 100.00| 100.00| 100.00| 100.00|
src/components/Counter.vue | 85.71| 100.00| 66.67| 85.71|
---------------------------|---------|----------|---------|---------|
All files | 91.67| 100.00| 80.00| 91.67|
---------------------------|---------|----------|---------|---------|
13.1.7 Mock 函数与模块
Mock 函数:
| |
Mock 模块:
| |
13.1.8 Vitest 配置详解
vitest.config.ts 完整配置:
| |
13.1.9 快照测试
快照测试:保存组件渲染结果,下次运行时对比。
| |
13.1.10 测试覆盖率门槛
设置强制覆盖率门槛:
| |
13.1.11 测试并行执行
Vitest 默认并行执行测试,可以提高速度。
| |
13.2 E2E 测试
13.2.1 Playwright 集成
Playwright 是微软出品的 E2E 测试框架,支持所有现代浏览器。
安装:
| |
13.2.2 Playwright 配置
| |
13.2.3 测试用例编写
| |
13.2.4 Cypress 集成
Cypress 是另一个流行的 E2E 测试框架。
安装:
| |
13.2.5 Nightwatch 集成
Nightwatch.js 是基于 Selenium 的 E2E 测试框架。
安装:
| |
13.2.6 测试报告与分析
Playwright HTML 报告:
| |
13.3 调试技巧
13.3.1 VS Code 调试配置
launch.json:
| |
tasks.json(辅助任务):
| |
13.3.2 Chrome DevTools 调试
Sources 面板:
- 打开 DevTools(F12)
- 切换到 Sources 标签
- 找到你的源码文件(在
vite://目录下,这是 Vite 的源码标识) - 在代码行号上点击设置断点
Vue DevTools:
| |
React DevTools:
| |
13.3.3 源码映射问题排查
sourcemap 不生效?:
| |
13.3.4 Network 网络请求调试
Network 面板使用技巧:
- 过滤请求:输入 URL 或关键字过滤
- 查看请求详情:点击请求,查看 Headers/Payload/Response
- 复制请求:右键请求,选择 Copy → Copy as fetch/cURL
- 重发请求:右键请求,选择 Replay XHR/fetch
13.3.5 性能分析
Performance 面板:
- 打开 DevTools(F12)
- 切换到 Performance 标签
- 点击录制,执行操作,然后停止
- 查看火焰图,分析性能瓶颈
13.3.6 内存泄漏排查
Memory 面板:
- 打开 DevTools(F12)
- 切换到 Memory 标签
- 选择 Heap Snapshot
- 点击 Take Snapshot
- 执行一些操作
- 再拍一张快照
- 对比两张快照,查找内存增长
13.4 CI 环境测试
13.4.1 GitHub Actions 集成
.github/workflows/test.yml:
| |
13.4.2 GitLab CI 集成
.gitlab-ci.yml:
| |
13.4.3 Jenkins 集成
Jenkinsfile:
| |
13.4.4 测试命令优化
| |
13.4.5 测试覆盖率集成
Codecov 集成:
| |
| |
13.5 本章小结
🎉 本章总结
这一章我们学习了 Vite 项目中的测试与调试技能:
单元测试:Vitest 安装与配置、第一个测试用例、Vue Testing Library(Vue 组件测试)、React Testing Library(React 组件测试)、覆盖率报告、Mock 函数与模块、快照测试
E2E 测试:Playwright 安装与配置、测试用例编写、Cypress 集成、测试报告分析
调试技巧:VS Code launch.json 配置、Chrome DevTools 调试、源码映射、网络请求调试、性能分析、内存泄漏排查
CI 环境测试:GitHub Actions 配置、GitLab CI 配置、Jenkins 配置、测试命令优化、覆盖率集成
📝 本章练习
Vitest 实战:为你的工具函数编写 3-5 个单元测试
组件测试:为你的 Vue/React 组件编写测试用例
Playwright E2E:编写 3 个 E2E 测试用例,覆盖主要功能流程
GitHub Actions:配置一个完整的 CI 流程
覆盖率提升:把测试覆盖率提升到 80% 以上
📌 预告:下一章我们将进入 完整项目实战,从零开始搭建一个完整的 Vue/React 项目,包含需求分析、技术选型、项目搭建、功能开发、移动端适配、国际化、部署上线。敬请期待!