単体テストでテスト データを作成するために、データ ビルダーを作成しました。私のデータ ビルダーは、すべてのプロパティのデフォルトを作成するので、それらを使用するテストでは、テストに適用可能なプロパティのみを指定する必要があります。
次のビルダーを検討してください。
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 が重要であるが注文が重要ではないテストで顧客を作成する必要がある場合、次のようにオブジェクトを作成できます。
Customer c = new CustomerBuilder()
.WithId(99)
.Build();
これは良い考えですか?それとも、非プリミティブ プロパティがどのように構築されるべきかを想定するのが最善ではない理由はありますか?