Skip to main content
在许多情况下,Bun 的测试运行器无需修改代码即可运行 Jest 测试套件。运行 bun test 代替 npx jestyarn test
terminal

你的测试文件通常可以直接使用。
  • Bun 内部将 @jest/globals 的导入重写为对应的 bun:test 等效项。
  • 如果你依赖 Jest 注入 testexpect 等全局变量,Bun 也会这样做。
如果你更愿意直接从 bun:test 导入,请更新导入语句。
test.ts

自 Bun v1.2.19 起,一个三斜线指令可以为全局测试函数启用 TypeScript 支持。将其添加到项目中的一个文件中,例如:
  • 项目根目录中的 global.d.ts 文件
  • 测试 preload.ts 设置文件(如果在 bunfig.toml 中使用 preload
  • TypeScript 编译包含的任何单个 .ts 文件
global.d.ts

添加后,项目中的每个测试文件都将获得 Jest 全局变量的 TypeScript 支持:
math.test.ts

Bun 实现了 Jest 的大部分匹配器,但兼容性并非 100%。请参见 编写测试 中的兼容性表格。
如果你使用 testEnvironment: "jsdom" 在类似浏览器的环境中运行测试,请按照 使用 Bun 和 happy-dom 进行 DOM 测试 指南将浏览器 API 注入到全局作用域中。该指南使用 happy-dom,它是 jsdom 的更轻量和更快的替代品。
bunfig.toml

将 Jest 配置中的 bail 替换为 --bail CLI 标志。
terminal

collectCoverage 替换为 --coverage CLI 标志。
terminal

testTimeout 替换为 --timeout CLI 标志。
terminal

许多其他 Jest 设置在 bun test 中不适用。
  • transform — Bun 支持 TypeScript 和 JSX。使用 插件 配置其他文件类型。
  • extensionsToTreatAsEsm
  • haste — Bun 使用自己的内部源码映射
  • watchmanwatchPluginswatchPathIgnorePatterns — 使用 --watch 在监听模式下运行测试
  • verbose — 在 bunfig.toml 中设置 logLevel: "debug"

此处未提及的设置不受支持或没有等效项。如果缺少你需要的内容,请提交功能请求
参见: