3. Sensing and Separation - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Code の 3章 Sensing and Separation。

Sensing の訳語が難しい。Fakeオブジェクトが登場。確かに思い返せば Sensing はテストを作る障害になっていた。

マインドマップから再構成したまとめ

知られるようにする・分離する

  • テストを書くために依存関係を切り離す場合、2つの動機がある
    • Sensing(知られる)
      • テストしようとしているコードの中で計算している値を、外から知ることが出来ないシチュエーション
    • Separation(分ける)
      • テストのためにコードの一部を使いたいのだが、他のクラスなどに依存していてわけられないシチューエーション
    • 例:ネットワークブリッジクラス
      • 手続きを call したときに中で起こることが分からない (Sensing)
      • ハードウェアに依存したクラスに依存していて、分けてインスタンス化出来ない(Separation)
  • Fake オブジェクト
    • テストに必要な依存しているクラスのオブジェクトになりすますオブジェクト。
    • なりすますことで、中で起きていることが分かり、コードの一部をテストに使いやすくなる
    • 懸念
      • ふりをする偽物のオブジェクトを利用してもテストにならないのでは?
      • => NO: このクラスには問題がないというように、問題の局所化を助けるテスト。
  • 例: Sale クラスと Display クラスの話。