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 的更轻量且更快的替代品。
由于内部使用 V8 API,jsdom 目前在 Bun 中无法工作。请在此处跟踪支持情况 链接。
bunfig.toml
在 Jest 配置中用
--bail CLI 标志替换 bail。
terminal
用
--coverage CLI 标志替换 collectCoverage。
terminal
用
--test-timeout CLI 标志替换 testTimeout。
terminal
使用
bun test 时,许多其他标志变得无关紧要或过时。
transform— Bun 支持 TypeScript & JSX。其他文件类型可通过 插件 配置。extensionsToTreatAsEsmhaste— Bun 使用其自己的内部源映射watchman、watchPlugins、watchPathIgnorePatterns— 使用--watch在监视模式下运行测试verbose— 在bunfig.toml中设置logLevel: "debug"
此处未提及的设置不受支持或没有等价物。如果缺少重要内容,请提交功能请求。
另请参阅: