用途:为 Bun 开发服务器(Dev Server)与热重载(HMR)编写与修改测试,验证热重载的健壮性与可靠性。
文件结构:test/bake/bake-harness.ts 提供共享工具,包括 devTest、prodTest、devAndProductionTest 以及 Dev、Client 类;test/bake/client-fixture.mjs 是 Client 的子进程(负责页面加载与 IPC 查询);test/bake/dev/*.test.ts 存放开发服务器与热重载测试;test/bake/dev-and-prod.ts 存放同时在开发与生产模式下运行的测试。
用例分类:bundle.test.ts 针对 DevServer 特有的打包问题;css.test.ts 针对 CSS 打包问题;plugins.test.ts 针对开发模式插件;ecosystem.test.ts 针对库兼容性(建议用具体 bug 而非整包测试);esm.test.ts 针对开发环境中的 ESM 特性;html.test.ts 针对 HTML 文件处理;react-spa.test.ts 针对 React、react-refresh 转换与服务器组件;sourcemap.test.ts 针对 source map 正确性。
基本用法:使用 devTest 定义测试,提供 files 初始文件状态,在 test(dev) 中使用 dev.fetch() 发起 HTTP 请求、dev.client() 打开浏览器实例,通过 dev.write/patch/delete 修改文件系统并自动等待热重载;用 c.expectMessage() 断言 console.log 输出,用 c.expectReload() 包裹会触发硬重载的代码。注意应使用 dev.write/patch/delete 而非 node:fs,因为它们会等待热重载。
错误测试:可用 errors 选项指定预期错误,例如在 dev.client 或 dev.delete 的 options 中传入错误字符串数组,以断言导入解析失败等错误信息。
限制:资料未提供更详细的 API 参数、错误匹配规则或运行命令等信息。