在許多情況下,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 v1.2.19 起,您可以透過一個三斜槓指令為全域性測試函式啟用 **TypeScript 支援**。這使得從 Jest 遷移變得更加容易,因為您只需在整個專案中新增一次該指令
將此指令新增到專案中的**一個檔案**中,例如
- 專案根目錄中的 `global.d.ts` 檔案
- 您的測試 `preload.ts` 設定檔案(如果在 bunfig.toml 中使用 `preload`)
- TypeScript 編譯中包含的任何單個 `.ts` 檔案
/// <reference types="bun-types/test-globals" />
新增後,專案中的所有測試檔案將自動獲得 Jest 全域性變數的 TypeScript 支援
describe("my test suite", () => {
test("should work", () => {
expect(1 + 1).toBe(2);
});
beforeAll(() => {
// setup code
});
afterEach(() => {
// cleanup code
});
});
Bun 實現了 Jest 絕大多數的匹配器,但相容性尚未達到 100%。請參閱 文件 > 測試執行器 > 編寫測試 中的完整相容性表格。
一些值得注意的缺失功能
expect().toHaveReturned()
如果您使用 testEnvironment: "jsdom" 在類似瀏覽器的環境中執行測試,您應該遵循 使用 Bun 和 happy-dom 進行 DOM 測試 指南,將瀏覽器 API 注入到全域性作用域中。本指南依賴於 happy-dom,它是 jsdom 的一個更輕量、更快的替代方案。
目前,jsdom 由於其內部使用 V8 API,在 Bun 中無法工作。請在此處 跟蹤其支援情況。
[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。其他檔案型別可以使用 外掛 進行配置。extensionsToTreatAsEsmhaste— Bun 使用其自己的內部源對映watchman,watchPlugins,watchPathIgnorePatterns— 使用--watch在監視模式下執行測試verbose— 在bunfig.toml中設定logLevel: "debug"
此處未提及的設定不受支援或沒有等效項。如果缺少重要功能,請 提交功能請求。
另請參閱