使用AutoFixture中的CreateMany省略特定字段

时间:2014-03-07 23:46:06

标签: c# unit-testing autofixture

我想创建foo的“很多”实例:

var fixture = new Fixture();
var expectedFoos = fixture.CreateMany<Foo>();

问题是,Foo是一个实体框架实体,具有我不想创建的关系。如果我只需要一个实例,我可以这样做:

var fixture = new Fixture();
var expectedFoo = fixture.Build<Foo>()
                         .Without(foo => foo.Relation1);
                         .Without(foo => foo.Relation2);

但是,如何轻松创建满足此条件的多个实例?我读过有关标本制造商的信息,但这里看起来真的有点过分了。

我正在寻找一些简单的东西(由于BuildMany不存在而无法编译):

var fixture = new Fixture();
var expectedFoos = fixture.BuildMany<Foo>()
                          .Without(foo => foo.Relation1);
                          .Without(foo => foo.Relation2);

2 个答案:

答案 0 :(得分:10)

这就是Customize的用途:

var fixture = new Fixture();
fixture.Customize<Foo>(o => o
       .Without(foo => foo.Relation1);
       .Without(foo => foo.Relation2));
var expectedFoos = fixture.CreateMany<Foo>();

答案 1 :(得分:8)

使用Customize绝对是正确的答案。但是,仅仅为了documentationBuild也会起作用:

var expectedFoos = fixture.Build<Foo>()
                          .Without(foo => foo.Relation1)
                          .Without(foo => foo.Relation2)
                          .CreateMany();