多くの場合、Bun のテストランナーはコード変更なしで Jest テストスイートを実行できます。npx jest や yarn test などの代わりに bun 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 からの移行がさらに簡単になります。プロジェクト全体でこのディレクティブを 1 回追加するだけで済むからです。
このディレクティブをプロジェクト内の 1 つのファイルに追加します。例えば:
- プロジェクトルートの
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(() => {
// セットアップコード
});
afterEach(() => {
// クリーンアップコード
});
});Bun は Jest のマッチャーの大部分を実装していますが、互換性は 100% ではありません。ドキュメント > テストランナー > テストの記述 の完全な互換性表を参照してください。
注目すべき欠落している機能:
expect().toHaveReturned()
testEnvironment: "jsdom" を使用してテストをブラウザのような環境で実行している場合は、Bun と happy-dom での DOM テスト ガイドに従って、ブラウザ API をグローバルスコープに注入する必要があります。このガイドは jsdom よりも軽量で高速な代替手段である happy-dom に依存しています。
現時点では、jsdom は V8 API の内部的な使用により Bun で動作しません。ここで サポートの進捗を追跡できます。
[test]
preload = ["./happy-dom.ts"]Jest 設定の bail を --bail CLI フラグに置き換えます。
bun test --bail=3collectCoverage を --coverage CLI フラグに置き換えます。
bun test --coveragetestTimeout を --test-timeout CLI フラグに置き換えます。
bun test --timeout 10000他の多くのフラグは bun test を使用すると無関係または不要になります。
transform— Bun は TypeScript と JSX をサポートしています。他のファイルタイプは プラグイン で構成できます。extensionsToTreatAsEsmhaste— Bun は独自の内部ソースマップを使用しますwatchman、watchPlugins、watchPathIgnorePatterns— ウォッチモードでテストを実行するには--watchを使用しますverbose—bunfig.tomlでlogLevel: "debug"を設定します
ここで言及されていない設定はサポートされていないか、同等のものはありません。重要なものが欠落している場合は 機能リクエストを提出 してください。
関連項目: