Я создал построитель данных, чтобы создавать тестовые данные в моих модульных тестах. Мои сборщики данных создают значения по умолчанию для всех свойств, поэтому в тестах, которые их используют, нужно только указать свойства, применимые к тесту.
Рассмотрим следующий строитель:
public class CustomerBuilder
{
public int id = 0;
public Order order = new OrderBuilder().Build();
public CustomerBuilder WithId(int id)
{
this.id = id;
return this;
}
public CustomerBuilder WithOrder(Order order)
{
this.order = order;
return this;
}
public Customer Build()
{
return new Customer(id, order);
}
}
Таким образом, если мне нужно создать клиента в тесте, в котором идентификатор важен для меня, но заказ не имеет значения, я могу создать объект следующим образом:
Customer c = new CustomerBuilder()
.WithId(99)
.Build();
Это хорошая идея? Или есть какая-то причина, по которой было бы не лучшим образом предположить, как должно строиться не примитивное свойство?