5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Mocks Aren't Stubs(モックはスタブじゃないよ?)

Last updated at Posted at 2019-09-27

Mocks Aren't Stubs written by Martin Fowler の mock と stub に関するメモです。1

用語について

 Mocks Aren't Stubs 内の用語は Gerard Meszaros の xUnit Test Patterns に基づく。

結果の検証方法

 結果の検証には、大別して2つの方法がある。

Test Double とは

  • テスト内で実際のオブジェクトの代わりに使われるオブジェクトの総称。
  • Double は Stunt Double(スタントマン)に由来する。
  • 既に広く使われている用語を避けるために新しい用語が採用された。

5種類の Test Double

  • Dummy
    • 渡されるだけで使われることはない。
    • 主に引数リストを埋めるためだけに用いられる。
  • Fake
    • 実装を持つが、製品用のものではないものを含む。
    • 例:テスト用にインメモリDBで代替した実装を含むなど。
  • Stub
    • テスト中の呼び出しに対する応答が設定されている。
    • テスト内の呼び出し以外は考慮されていないことが多い。
  • Spy
    • Stub の一種。
    • 呼び出された情報を記録する。
    • 例:email サービスとしてメッセージの送信数を記録するなど。
  • Mock
    • expectations(期待された一連の呼び出し仕様)が事前に組み込まれている。

Mock と Stub の違い

Classical and Mockist Testing

  • classical TDD style
    • 可能な限りは collaborator(DOC) として実際のオブジェクトを用い、それが難しい場合は double を用いる。
  • mockist TDD style
    • collaborator(DOC) として常に mock を用いる。
  1. 厳密な翻訳とかではないです。

  2. 例:メール送信サービスを double で置き換える場合に、テスト中に何通のメールを送信したかという情報を double から得ようとした場合、mock であれば振る舞いを検証するだけでよいが、stub の場合は stub に送信数という状態を追加して、それを状態として検証しなくてはならない。

5
5
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
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?