在許多情況下,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"
此處未提及的設定不受支援或沒有等效項。如果缺少重要的內容,請提交功能請求。
參見