Skip to content

Bun には Jest 風の expect API を備えたテストランナー が組み込まれています。


使用するには、プロジェクトディレクトリから bun test コマンドを実行します。テストランナーはディレクトリ内の以下のパターンに一致するすべてのファイルを再帰的に検索し、含まれているテストを実行します。

txt
*.test.{js|jsx|ts|tsx}
*_test.{js|jsx|ts|tsx}
*.spec.{js|jsx|ts|tsx}
*_spec.{js|jsx|ts|tsx}

これは典型的なテスト実行の出力例です。この場合、3 つのテストファイル(test.test.jstest2.test.jstest3.test.js)があり、それぞれに 2 つのテスト(addmultiply)が含まれています。

sh
bun test
txt
test.test.js:
✓ add [0.87ms]
✓ multiply [0.02ms]

test2.test.js:
✓ add [0.72ms]
✓ multiply [0.01ms]

test3.test.js:
✓ add [0.54ms]
✓ multiply [0.01ms]

 6 pass
 0 fail
 6 expect() calls
Ran 6 tests across 3 files. [9.00ms]

特定のテストファイルのみを実行するには、bun test に位置引数を渡します。ランナーはその引数をパスに含むファイルのみを実行します。

sh
bun test test3
txt
test3.test.js:
✓ add [1.40ms]
✓ multiply [0.03ms]

 2 pass
 0 fail
 2 expect() calls
Ran 2 tests across 1 files. [15.00ms]

すべてのテストには、test 関数の第 1 パラメータで定義された名前があります。テストは describe を使用してスイートにグループ化することもできます。

ts
import { test, expect, describe } from "bun:test";

describe("math", () => {
  test("add", () => {
    expect(2 + 2).toEqual(4);
  });

  test("multiply", () => {
    expect(2 * 2).toEqual(4);
  });
});

名前で実行するテストをフィルタリングするには、-t/--test-name-pattern フラグを使用します。

-t add を追加すると、名前に「add」を含むテストのみを実行します。これは test で定義されたテスト名または describe で定義されたテストスイート名で機能します。

sh
bun test -t add
txt
test.test.js:
✓ add [1.79ms]
» multiply

test2.test.js:
✓ add [2.30ms]
» multiply

test3.test.js:
✓ add [0.32ms]
» multiply

 3 pass
 3 skip
 0 fail
 3 expect() calls
Ran 6 tests across 3 files. [59.00ms]

テストランナーの完全なドキュメントについては、ドキュメント > テストランナー を参照してください。

Bun by www.bunjs.com.cn 編集