【てすとふぃくすちゃ】

テストフィクスチャ とは?

💡 テストの舞台セット。役者(コード)が演じる前に、小道具をきっちり並べておく
📌 このページのポイント
テストフィクスチャ — テストの事前準備 setUp(事前準備) DBにテストデータ投入 モックサーバー設定 環境変数を設定 テスト実行 フィクスチャを使って テストを実行 結果を検証(assert) tearDown(後片付け) テストデータを削除 モックをリセット 元の状態に復元 フィクスチャに含まれるもの テストデータ DBのシードデータ 設定・環境 環境変数・設定値 モック設定 外部APIの代役 テスト用ファイル 画像・CSV等
テストフィクスチャのイメージ
ひよこ ひよこ

テストフィクスチャってテストデータのこと?

ペンギン先生 ペンギン先生

テストデータも含むけど、もっと広い概念だよ。データベースの初期状態、環境変数、設定ファイル、モックサーバーの設定など、テストが正しく動くために必要な「お膳立て」全部がフィクスチャなんだ

ひよこ ひよこ

setUpとtearDownって何なの?

ペンギン先生 ペンギン先生

setUpはテスト前にフィクスチャを準備するメソッド、tearDownはテスト後に片付けるメソッドだよ。JUnitなら@BeforeEach、JestならbeforeEachで書くね。テスト間でデータが干渉しないようにリセットするのが重要なんだ

ひよこ ひよこ

フィクスチャが大きくなりすぎるとどうなるの?

ペンギン先生 ペンギン先生

テストが壊れやすくなるし、何をテストしているか分かりにくくなるんだ。「ユーザーの注文をテストするのに、商品マスタ100件を投入している」みたいな状態は危険だよ

ひよこ ひよこ

いいフィクスチャの作り方ってあるの?

ペンギン先生 ペンギン先生

Factory パターンやBuilder パターンを使ってテストごとに最小限のデータを生成するのがベストだよ。RubyならFactoryBot、JavaScriptならfisheryなどのライブラリが便利なんだ

ひよこ ひよこ

共有フィクスチャと個別フィクスチャはどう使い分けるの?

ペンギン先生 ペンギン先生

共有フィクスチャはテストスイート全体で使い回すから高速だけど、テスト間の依存が生まれやすい。個別フィクスチャはテストごとに作るから独立性が高い。基本は個別を推奨して、読み取り専用のマスタデータだけ共有にするのが安全だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「テストフィクスチャ」って出てきたら「テスト実行のために事前に用意するデータや環境のセット」と思えればだいたいOK!
📖 おまけ:英語の意味
「Test Fixture」 = テストの固定装置
💬 fixtureは「固定されたもの、取り付け器具」という意味だよ。テストが安定して動くための「固定された土台」というイメージだね
← 用語集にもどる