Bun

指南測試執行器

從 Jest 遷移到 Bun 的測試執行器

在許多情況下,Bun 的測試執行器可以運行 Jest 測試套件,而無需修改任何程式碼。只需運行 bun test 而不是 npx jestyarn test 等。

- $ npx jest
- $ yarn test
+ $ bun test

通常不需要修改程式碼。

  • Bun 內部會重寫從 @jest/globals 的導入,以使用 bun:test 的等效項。
  • 如果您依賴 Jest 將 testexpect 等注入為全域變數,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

bunfig.toml
[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 使用其自己的內部來源地圖
  • watchmanwatchPluginswatchPathIgnorePatterns — 使用 --watch 以監看模式運行測試
  • verbose — 在 bunfig.toml 中設定 logLevel: "debug"

此處未提及的設定不受支援或沒有等效項。如果缺少重要的內容,請提交功能請求

參見