オブジェクトをテスト駆動開発する
実践テスト駆動開発(Growing Object-Oriented Software, Guided By Tests) 第2章
オブジェクトの網の目(オブジェクト指向システム=協力しあうオブジェクトの網の目)
オブジェクト指向設計は、オブジェクト自体よりもオブジェクト間のコミュニケーションを重視する。
not手続的、オブジェクトの網の目がどう振る舞うかについての宣言的な定義によってシステムの振る舞いを記述
どうやるかではなく何をしたいかに集中
オブジェクトと値
メッセージに従うこと
ドメインモデルはコミュニケーションパターンの中に存在する
テストやモックオブジェクトが、オブジェクト間のコミュニケーションパターンを明確に見えるようにする
よくわからない。。
命じよ、訊ねるな
しかし、時には訊ねることもある
オブジェクトに対する問い合わせを無闇に行わない
少なくとも、呼び出し元オブジェクトの意図を説明するように問い合わせを書く
値に対してはどんどん問い合わせをする
協力しあうオブジェクトのユニットテスト
インタフェースの発見
モックオブジェクトを用いてTDDをサポートする
テストに必要なモックオブジェクトを生成する。
テスト対象オブジェクトを含む、実際のオブジェクトを生成する。
モックオブジェクトに、テスト対象オブジェクトからどう呼び出されるかのエクスペクテーションを定義する。
テスト対象オブジェクトのメソッドを呼び出す。
結果として生じる値が全て正しいことと、期待された呼び出しが全て行われていることをアサートする。