如何使用NBuilder自动创建子集合



给定以下类:

class Department
{
    public String Name { get; set; }
    public IList<Employee> Employees { get; set; }
}
class Employee
{
    public String Name { get; set; }
    public String Address { get; set; }
}

使用NBuilder,我可以创建一个部门对象,并通过以下方式分配10名员工:

var employees = Builder<Employee>.CreateListOfSize(10).Build();
var department = Builder<Department>
    .CreateNew()
    .With(d=>d.Employees = employees)
    .Build();

这适用于少量的集合,但对于大型集合会变得很麻烦。有没有一种方法可以让NBuilder自动填充对象中的所有集合?

顺便说一句,我没有和NBuilder绑定,所以如果有另一个免费的库可以做到这一点,我会非常乐意切换。

由于您没有绑定到NBuilder,因此使用AutoFixture可以添加使用集合的约定。

例如,要创建一个有10名员工的Department实例,可以执行以下操作:

var fixture = new Fixture().Customize(new MultipleCustomization());
fixture.RepeatCount = 10;
var dep = fixture.CreateAnonymous<Department>();

这看起来可能是大致相同的代码量,但它的扩展性要好得多,因为你不需要添加更多的代码来填充更多的集合——这只是惯例。

在AutoFixture 3.0中,集合的约定将默认存在,这意味着您甚至不需要添加MultipleCustomization。

最新更新