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