在许多情况下,Bun 的测试运行器可以在不更改代码的情况下运行 Jest 测试套件。只需运行 bun test
即可,而不是 npx jest
、yarn test
等。
- $ npx jest
- $ yarn test
+ $ bun test
通常不需要更改代码。
- Bun 在内部将从
@jest/globals
的导入重写为使用bun:test
等价项。 - 如果你依赖 Jest 来注入
test
、expect
等作为全局变量,Bun 也会这样做。
但是如果你更愿意切换到 bun:test
导入,你也可以这样做。
import {test, expect} from "@jest/globals";
import {test, expect} from "bun:test";
Bun 实现了 Jest 绝大多数的匹配器,但兼容性尚未达到 100%。请参阅 文档 > 测试运行器 > 编写测试 中的完整兼容性表。
一些值得注意的缺失功能
expect.extend()
expect().toMatchInlineSnapshot()
expect().toHaveReturned()
如果你使用 testEnvironment: "jsdom"
在类似浏览器的环境中运行测试,你应该遵循 使用 Bun 和 happy-dom 进行 DOM 测试 指南,将浏览器 API 注入到全局作用域中。本指南依赖于 happy-dom
,它是一种比 jsdom
更精简、更快的替代方案。
目前 jsdom 在 Bun 中不起作用,因为它在内部使用了 V8 API。在此 处 跟踪对其支持。
[test]
preload = ["./happy-dom.ts"]
用 --bail
CLI 标志替换 Jest 配置中的 bail
。
bun test --bail 3
用 --coverage
CLI 标志替换 collectCoverage
。
bun test --coverage
用 --test-timeout
CLI 标志替换 testTimeout
。
bun test --timeout 10000
使用 bun test
时,许多其他标志变得无关紧要或过时。
transform
— Bun 支持 TypeScript 和 JSX。其他文件类型可以使用 插件 进行配置。extensionsToTreatAsEsm
haste
— Bun 使用其自己的内部源映射watchman
、watchPlugins
、watchPathIgnorePatterns
— 使用--watch
在监视模式下运行测试verbose
— 在bunfig.toml
中设置logLevel: "debug"
。
此处未提及的设置不受支持或没有等效项。如果缺少重要内容,请 提交功能请求。
另请参阅