bun test,而不是 npx jest、yarn test 等。
terminal
通常不需要更改代码。
- Bun 会在内部重写来自
@jest/globals的导入,使用bun:test的等效项。 - 如果你依赖 Jest 注入
test、expect等全局变量,Bun 也会这样做。
bun:test 导入,也可以这样做。
从 Bun v1.2.19 开始,你可以通过一个三斜线指令启用全局测试函数的 TypeScript 支持。这使得从 Jest 迁移更加简单,因为你只需在整个项目中添加一次该指令: 将此指令添加到项目中的 任意一个文件,例如:
- 项目根目录下的
global.d.ts文件 - 你的测试
preload.ts设置文件(如果在 bunfig.toml 中使用了preload) - TypeScript 编译时包含的任意一个
.ts文件
添加后,项目中的所有测试文件将自动获得 Jest 全局变量的 TypeScript 支持:
Bun 实现了绝大多数 Jest 的匹配器,但兼容性尚未达到 100%。请参考完整的兼容性表:文档 > 测试运行器 > 编写测试。 一些显著缺失的功能:
expect().toHaveReturned()
如果你使用
testEnvironment: "jsdom" 在类似浏览器的环境中运行测试,应当遵循 Bun 和 happy-dom 的 DOM 测试指南,将浏览器 API 注入全局作用域。该指南依赖 happy-dom,它是 jsdom 的一个更轻量且更快速的替代方案。
目前由于 jsdom 内部使用了 V8 API,无法在 Bun 中运行。其支持进展请追踪这里:issue。
bunfig.toml
将 Jest 配置中的
bail 替换为 --bail 命令行参数。
terminal
将
collectCoverage 替换为 --coverage 命令行参数。
terminal
将
testTimeout 替换为 --test-timeout 命令行参数。
terminal
使用
bun test 时,许多其他标志变得无关紧要或过时。
transform— Bun 支持 TypeScript 和 JSX。其他文件类型可以通过 插件 配置。extensionsToTreatAsEsmhaste— Bun 使用自有的内部源映射watchman、watchPlugins、watchPathIgnorePatterns— 使用--watch可开启测试的监听模式verbose— 在bunfig.toml中设置logLevel: "debug"
未提及的设置则不被支持或无对应项。如果缺少重要功能,请提交功能请求。
另见: