12

I want to create "many" instances of foo :

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

The problem is, Foo is an Entity Framework entity, with relations that I don't want to create. If I needed only one instance, I could do that :

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

But how can I easily create multiple instances satisfying this condition ? I've read about specimen builders but it seems really overkill here.

I'm looking for something as simple as that (doesn't compile because BuildMany doesn't exist) :

var fixture = new Fixture();
var expectedFoos = fixture.BuildMany<Foo>()
                          .Without(foo => foo.Relation1);
                          .Without(foo => foo.Relation2);
KeatsPeeks
  • 19,126
  • 5
  • 52
  • 83

2 Answers2

16

That's what Customize is for:

var fixture = new Fixture();
fixture.Customize<Foo>(o => o
       .Without(foo => foo.Relation1)
       .Without(foo => foo.Relation2));
var expectedFoos = fixture.CreateMany<Foo>();
Sam Jones
  • 4,443
  • 2
  • 40
  • 45
KeatsPeeks
  • 19,126
  • 5
  • 52
  • 83
12

Using Customize is definitely the right answer. However, just for the sake of documentation, Build will work too:

var expectedFoos = fixture.Build<Foo>()
                          .Without(foo => foo.Relation1)
                          .Without(foo => foo.Relation2)
                          .CreateMany();
Enrico Campidoglio
  • 56,676
  • 12
  • 126
  • 154