happy-dom
为了为您的前端代码和组件编写无头测试,我们推荐 happy-dom。Happy DOM 在纯 JavaScript 中实现了完整的 HTML 和 DOM API 集合,使得能够高保真地模拟浏览器环境。 要开始,请将@happy-dom/global-registrator 包作为开发依赖项安装。
terminal
document 等浏览器 API 在全局作用域中可用。在项目根目录下创建一个名为 happydom.ts 的文件并添加以下代码:
bun test 之前预加载此文件,请打开或创建一个 bunfig.toml 文件并添加以下行。
bunfig.toml
bun test 时执行 happydom.ts。现在您可以编写使用 document 和 window 等浏览器 API 的测试。
TypeScript 支持
根据您的tsconfig.json 设置,您可能会在上面的代码中看到”找不到名称’document‘“类型错误。要”注入”document 和其他浏览器 API 的类型,请在任何测试文件的顶部添加以下三斜线指令。
bun test 运行此测试:
terminal
React Testing Library
Bun 与 React Testing Library 无缝配合,用于测试 React 组件。按照上述设置好 happy-dom 后,您可以正常安装和使用 React Testing Library。terminal
高级 DOM 测试
自定义元素
您可以使用相同的设置来测试自定义元素和 Web 组件:事件测试
测试 DOM 事件和用户交互:配置提示
全局设置
对于更复杂的 DOM 测试设置,您可以创建更全面的预加载文件:bunfig.toml:
bunfig.toml
故障排除
常见问题
DOM API 的 TypeScript 错误: 确保在测试文件顶部包含/// <reference lib="dom" /> 指令。
缺少全局变量: 确保在预加载文件中正确导入并注册了 @happy-dom/global-registrator。
React 组件渲染问题: 确保您已安装 @testing-library/react 并正确设置了 happy-dom。
性能考虑
Happy-dom 很快,但对于非常大的测试套件,您可能想要:- 使用
beforeEach在测试之间重置 DOM 状态 - 避免在单个测试中创建太多 DOM 元素
- 考虑使用测试库中的
cleanup函数