【てすとふぃくすちゃ】

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

公開:
💡 テストの舞台セット。役者(コード)が演じる前に、小道具をきっちり並べておく
📌 このページのポイント
テストフィクスチャ — テストの事前準備 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は「固定されたもの、取り付け器具」という意味だよ。テストが安定して動くための「固定された土台」というイメージだね
← 用語集にもどる