Skip to content

多くの場合、Bun のテストランナーはコード変更なしで Jest テストスイートを実行できます。npx jestyarn test などの代わりに bun test を実行するだけです。

sh
npx jest
yarn test
bun test

コード変更は多くの場合不要です。

  • Bun は内部的に @jest/globals からのインポートを bun:test の同等のものに書き換えます。
  • Jest が testexpect などをグローバルとして注入することに依存している場合、Bun もそれを行います。

ただし、bun:test インポートに切り替えたい場合は、それも可能です。

ts
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 ファイル
ts
/// <reference types="bun-types/test-globals" />

追加すると、プロジェクト内のすべてのテストファイルは自動的に Jest グローバルの TypeScript サポートを取得します。

ts
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 で動作しません。ここで サポートの進捗を追跡できます。

toml
[test]
preload = ["./happy-dom.ts"]

Jest 設定の bail--bail CLI フラグに置き換えます。

sh
bun test --bail=3

collectCoverage--coverage CLI フラグに置き換えます。

sh
bun test --coverage

testTimeout--test-timeout CLI フラグに置き換えます。

sh
bun test --timeout 10000

他の多くのフラグは bun test を使用すると無関係または不要になります。

  • transform — Bun は TypeScript と JSX をサポートしています。他のファイルタイプは プラグイン で構成できます。
  • extensionsToTreatAsEsm
  • haste — Bun は独自の内部ソースマップを使用します
  • watchmanwatchPluginswatchPathIgnorePatterns — ウォッチモードでテストを実行するには --watch を使用します
  • verbosebunfig.tomllogLevel: "debug" を設定します

ここで言及されていない設定はサポートされていないか、同等のものはありません。重要なものが欠落している場合は 機能リクエストを提出 してください。


関連項目:

Bun by www.bunjs.com.cn 編集