在浏览器中测试 Vue 组件 笔记

在浏览器中测试 Vue 组件

作者旨在编写不依赖 Node.js 的前端 JavaScript。遇到的一个主要挑战是缺乏有效的前端代码测试方法。此前尝试使用 Playwright,但因其速度较慢且需要 Node.js 而被认为不可行。为此,作者受 Alex Chan 关于极简浏览器内单元测试框架工作的启发,探索直接在浏览器标签页中运行测试。虽然 Chan 的方法侧重于单元测试,但作者希望在不经过 Node.js 构建流程的情况下,对 Vue 组件执行端到端集成测试。作者选用 QUnit 作为测试框架,赞赏其“重新运行测试”按钮在调试中的便利性。该过程包括将 Vue 组件全局暴露,并创建一个 mountComponent 函数,用于在页面外部的不可见 div 中渲染这些组件。测试夹具(fixture)数据通过向专用端点发送 POST 请求重置数据库来管理。随后,一个基础测试会渲染一个组件并断言其内容。遇到的关键问题包括等待异步操作完成,这促使作者开发了一个 waitFor() 函数。确定需要等待的正确元素或条件颇具挑战性,这也引发了关于重构应用程序以提升可靠性的建议。作者还尝试通过添加 CSS 类来标识元素,并注意到像 Testing Library 这样的库推荐更具可访问性的方法。表单处理带来了困难,因为仅仅设置值是不够的,还需要触发相关的 DOM 事件。这一点凸显了 UI 测试库为何能够简化此类任务。测试覆盖率部分借助 Chrome 内置的开发者工具进行评估,但该过程需要特定的配置和操作才能与打包后的 JavaScript 配合工作。尽管存在学习曲线,作者仍认为这段经历令人愉快,并对为前端项目构建自信可靠的测试套件充满乐观。此外,作者也在考虑进一步探索像 Testing Library 这样的库,该库提供与浏览器独占执行兼容的 UMD 构建版本,并正在思考如何将主要面向浏览器的测试集成到持续集成(CI)环境中。