我正在尝试自定义类中生成的数据..其中属性是另一个类。
例如
public class Foo
{
public string Id { get; set; }
public Baa Baa { get; set; }
}
public class Baa
{
// 30 properties which are strings, ints, etc.
}
我想知道我是否可以做这样的事情......
var fixture = new Fixture();
return fixture.Build<Foo>()
.With(x => x.Id, $"Foo-{fixture.Create<int>()}")
.With(x => x.Baa, CreateSomeCustomBaaUsingAutofixture)
.Create();
然后..
private Baa CreateSomeCustomBaaUsingAutofixture()
{
var fixture = new Fixture();
return fixture.Build<Baa>()
.With(lots of customizations here)
.Create();
}
有更清洁的方法吗?或者......基本上是唯一/推荐的方式?
据我所知,AutoFixture可以自动为我创建Baa
的实例,并为其中的属性创建数据。我只是希望能够更多地定制它。
答案 0 :(得分:2)
由于您希望按惯例配置Baa
,因此您可以这样做。它可能看起来像这样:
fixture.Customize<Baa>(c => c
.With(x => x.Baz, "Corge")
.With(x => x.Qux, "Garply"));
每当您创建Foo
对象时,Baa
属性将根据这些规则创建一个值:
var foo = fixture.Create<Foo>();
Console.WriteLine(foo.Baa.Baz);
Console.WriteLine(foo.Baa.Qux);
打印:
Corge
Garply