LoginSignup
0
0

テストではMockよりもFakeを使おうという話

Last updated at Posted at 2024-06-24

はじめに

https://testing.googleblog.com/2024/02/increase-test-fidelity-by-avoiding-mocks.html?m=1
この記事はGoogle Test Blogの記事を要約したものになります!

MockとFakeの違い

Mock

  • 呼び出され方を事前定義することができるオブジェクト
  • メソッドの挙動を指定して、入力値と期待値を定義できる

Fake

  • 実際のクラスと同じように動く
  • SQLiteを使ってDBからデータ取得をする実クラスに対して、内部的にはHash等を使って同一の値を返すようなFakeクラスなど

Mockのデメリット

  • Mock用のSDKの使い方を理解する必要がある
  • テストクラスの内部を正確に知っていないとMockの挙動定義だらけになって可読性が落ちる
  • Mock対象のクラスに変更があった時に修正する必要が出る場合がある
  • 上記によりバグの見逃しが発生する可能性がある

実コード > Fake > Mock

  • 実コードが最も忠実度が高いため、テストでも極力こちらをつかう
  • 実コードを使うことで実行時間が遅い、安定性に欠ける、外部サーバに接続の必要があるなどがある場合はFakeを使ってアウトプットを定義する
  • Fakeが使えない場合はMockを使う

Fakeを使うことの注意点

  • 実際の挙動に本当に準拠しているかのテストが必要になる
  • Fakeオブジェクト自体の保守・管理が必要になる
  • Fakeオブジェクト分コードが多くなる
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0