モック所有者を渡してオブジェクトをテストしようとしています。元々は所有者としてPartD
a が渡されます:PartB1
PartD partD = new PartD(partB1);
PartD
今、モックを渡して機能をテストしたいと思いますowner
:
PartD partD = new PartD(mockPartB1);
PartD
これは、所有者の所有者のいくつかのステータスを知っていることに依存するものがあることを除いて、問題なく動作します。
Boolean PartD.Validate()
{
//Some fields are not required if the PartA has more than one transaction
Boolean is24Hour = (this.PartB1.PartA.Transactions.Count > 1);
if (this.Firstname == "")
{
if (!is24Hour)
LogError("First name is empty");
else
LogWarning("First name is empty, but requires reasonable efforts");
}
...
}
これにより、モックオブジェクトの問題PartD
が発生PartB1
する.PartA
Transactions
Count
で 1 つのメソッドの一部をテストすることにのみ関心があるPartD
ため、ソフトウェア全体を再設計することにはあまり関心がなく、確実に回帰が導入されるため、2 分間の修正をテストできます。私は修正に2分を費やし、テスト方法を見つけようとして6時間を失いました:
PartD partd = new PartD(mock);
partD.HomeAddress = "123 Maïn Street";
CheckEquals(partD.HomeAddress, "123 Main Street");
全体を再設計したいと思っていたとしても。をすべての子オブジェクトに渡すのは、
TransactionCount
変更されるたびに恐ろしい設計のように思えます。他のValidate
トランザクションがあるかどうかを知る必要がある 3 人の子供がダウンしている方法は、子供がその親に関する情報を必要とするシステムの唯一のケースではありません。親オブジェクトがこのすべての情報をすべての子に伝えた場合、必要がないかどうかにかかわらず、無駄であり、どこかで更新が失われる傾向があります。
また、子 - 子 - 子オブジェクトが新しい内部チェックを持つたびに、その周りのすべてのオブジェクトを再設計する必要があります。これにより、それらはすべて、必要な場合と不要な場合がある情報を渡すことができます。
親が望まない子オブジェクトを与えないようにしながら、必要に応じて子供が親と話すのを避けるにはどうすればよいですか?
編集:私がテストするのを待っている変更は次のとおりです。
if (Pos(homeAddress, "\r\n") > 0) ...
に
if (Pos("\r\n", homeAddress) > 0) ...