我创建了一个数据构建器,以便在我的单元测试中创建测试数据。我的数据构建器为所有属性创建默认值,以便使用它们的测试只需要指定适用于测试的属性。
考虑以下构建器:
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);
}
}
通过这样做,如果我需要在 id 对我很重要但 Order 无关紧要的测试中创建客户,我可以按如下方式创建对象:
Customer c = new CustomerBuilder()
.WithId(99)
.Build();
这是一个好主意吗?或者有什么理由认为应该如何构造非原始属性可能不是最好的?