Я пытаюсь проверить объект, передав ложное владелец . Первоначально PartD
передавалось бы 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
.
Меня интересует только тестирование одной части одного метода в PartD
, поэтому я не очень заинтересован в перепроектировании всего программного обеспечения, конечно же, в представлении регрессий, поэтому я могу протестировать свое 2-минутное исправление. я потратил 2 минуты на исправление и потерял 6 часов, пытаясь выяснить, как это проверить:
PartD partd = new PartD(mock);
partD.HomeAddress = "123 Maïn Street";
CheckEquals(partD.HomeAddress, "123 Main Street");
Даже если бы я был готов перепроектировать всю вещь; передача TransactionCount
каждому дочернему объекту, каждый раз, когда он меняется, кажется ужасным замыслом. Метод Validate
, при котором трое детей вынуждены знать, существуют ли другие транзакции, - не единственный случай, когда ребенок нуждается в информации о своих родителях.
Если родительские объекты передали всю эту информацию всем дочерним элементам, независимо от того, нуждались ли они в этом, это пустая трата времени, и они могут пропустить обновление где-либо.
Кроме того, каждый раз, когда объект child-child-child имеет новую внутреннюю проверку , он должен заново проектировать все объекты вокруг него, чтобы все они могли передавать информацию это может или не может быть необходимо.
Как я могу избежать того, чтобы дети разговаривали с родителями по мере необходимости, в то время как родители не должны давать детям предметы, которые им не нужны?
Редактировать: Изменение, которое я жду для проверки:
if (Pos(homeAddress, "\r\n") > 0) ...
до
if (Pos("\r\n", homeAddress) > 0) ...