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

4

以下是给定的类:

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自动填充对象中的所有集合?

顺便说一下,如果有其他免费库可以做到这一点,我很乐意切换。

1个回答

8

如果你不想使用NBuilder,那么你可以使用AutoFixture来添加处理集合的约定

比如,要创建一个有10个员工的Department实例,你可以这样做:

var fixture = new Fixture().Customize(new MultipleCustomization());
fixture.RepeatCount = 10;

var dep = fixture.CreateAnonymous<Department>();

这段代码看起来大致相同,但它的可扩展性更好,因为您不需要添加更多的代码来填充更多的集合 - 这只是按照惯例发生。

在AutoFixture 3.0中,默认情况下将提供集合约定,这意味着您甚至不需要添加MultipleCustomization。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接