テストダブルとは?
テストダブルは、テスト中に本物の依存関係の代わりを務め、テスト対象のコードを分離して動かせるようにするオブジェクト全般を指します。その仲間には、stub(あらかじめ用意した値を返す)、mock(やり取りに対してアサーションする)、fake(軽量で動作する実装)、spy(呼び出しを記録する)が含まれます。これらは、遅い、非決定的、または利用できない依存関係をテストから取り除きます。
なぜ重要か
本物の依存関係、データベース、決済ゲートウェイ、サードパーティAPIは、テストを遅く、flakyに、あるいはCIで実行不可能にします。テストダブルはそれらを制御可能な代役に置き換え、ユニットテストを速く決定的に保ちます。トレードオフは、mockのしすぎによって、本物の統合が壊れていてもテストが通ってしまうことです。
関連する概念
- stub、mock、fake、spyを含む
- テスト対象のコードを依存関係から分離する
- mockのしすぎは本物の統合failureを隠しうる
関連ガイド
What Is a Contract Test?A contract test verifies that two services agree on the shape of their interaction, catching breaking API cha…
What Is a Flaky Test?A flaky test passes and fails intermittently on the same code, usually due to timing, ordering, or environmen…
What Is a Property-Based Test?A property-based test checks that a property holds across many automatically generated inputs, rather than as…