3
テスト対象のクラスの一部を偽造しても大丈夫ですか?
クラスがあるとしましょう(不自然な例とその悪いデザインを許してください): class MyProfit { public decimal GetNewYorkRevenue(); public decimal GetNewYorkExpenses(); public decimal GetNewYorkProfit(); public decimal GetMiamiRevenue(); public decimal GetMiamiExpenses(); public decimal GetMiamiProfit(); public bool BothCitiesProfitable(); } (GetxxxRevenue()およびGetxxxExpenses()メソッドには、スタブ化された依存関係があることに注意してください) 現在、GetNewYorkProfit()とGetMiamiProfit()に依存するBothCitiesProfitable()を単体テストしています。GetNewYorkProfit()とGetMiamiProfit()をスタブしても大丈夫ですか? そうしないと、GetNewYorkProfit()とGetMiamiProfit()をBothCitiesProfitable()と同時にテストしているようです。GetxxxProfit()メソッドが正しい値を返すように、GetxxxRevenue()およびGetxxxExpenses()のスタブを設定する必要があります。 これまでのところ、内部メソッドではなく外部クラスのスタブの依存関係の例を見てきました。 そして、それが大丈夫な場合、これを行うために使用すべき特定のパターンはありますか? 更新 コアの問題を見逃しているのではないかと心配しています。これはおそらく私の貧弱な例のせいです。基本的な質問は、クラス内のメソッドが、その同じクラス内で公開されている別のメソッドに依存している場合、その他のメソッドをスタブ化しても大丈夫(または推奨)ですか? たぶん何かが欠けているかもしれませんが、クラスを分割することが常に意味があるかどうかはわかりません。おそらく、もう1つの最小限の良い例は次のとおりです。 class Person { public string FirstName() public string LastName() public string FullName() } ここで、フルネームは次のように定義されます: public string …