# テストダブルの最小化

ダミーオブジェクト以外のテストダブルを使いすぎないようにしましょう。置き換えたモジュールが変更されるたびにテストダブルも追従させる必要があり、変更に弱くなるためです。また、正しく置き換えられないと、失敗すべきテストが成功してしまう可能性があります。

テストダブルとは、テスト対象が依存しているモジュールを置き換えるものです。以下の5種類があります。

  • テストスタブ
    • テスト対象への入力を与えるもの
  • テストスパイ
    • テスト対象からの出力を受け取って保持するもの
    • 検証はスパイから値を取り出して行われる
  • モックオブジェクト
    • テスト対象からの出力を受け取って検証するもの
    • 検証はモック内で行われる
  • ダミーオブジェクト
    • テストに影響を与えないが、テストを実行するために必要なもの
    • 関数の実行に必要なパラメータなど
  • フェイクオブジェクト
    • テスト対象が依存しているモジュールと同じように動作するもの
    • 実際のDBの代わりにインメモリDBを使ってテストの実行時間を短くするなど

ダミーオブジェクト以外のテストダブルは、基本的にプロセスの外部に依存する箇所でのみ使います。

NOTE

✏️ テストダブルを使いすぎないようにする