在许多情况下,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().toHaveReturned()
如果您使用 testEnvironment: "jsdom"
在类似浏览器的环境中运行测试,则应遵循 使用 Bun 和 happy-dom 进行 DOM 测试 指南,将浏览器 API 注入到全局作用域中。本指南依赖于 happy-dom
,它是 jsdom
的更精简、更快速的替代方案。
目前,由于 jsdom 内部使用了 V8 API,因此在 Bun 中无法工作。在此处跟踪对其的支持 here。
[test]
preload = ["./happy-dom.ts"]
将 Jest 配置中的 bail
替换为 --bail
CLI 标志。
bun test --bail=3
将 collectCoverage
替换为 --coverage
CLI 标志。
bun test --coverage
将 testTimeout
替换为 --test-timeout
CLI 标志。
bun test --timeout 10000
使用 bun test
时,许多其他标志变得不相关或过时。
transform
— Bun 支持 TypeScript 和 JSX。可以使用 插件 配置其他文件类型。extensionsToTreatAsEsm
haste
— Bun 使用其自己的内部源映射watchman
、watchPlugins
、watchPathIgnorePatterns
— 使用--watch
在监视模式下运行测试verbose
— 在bunfig.toml
中设置logLevel: "debug"
此处未提及的设置不受支持或没有等效项。如果缺少重要的内容,请提交功能请求。
另请参阅