我想使用自动混合来创建一个对象,但他们是某些属性,我想总是默认(而其余的可以自动生成)。但是,每当我设置自定义时,它会在我使用自定义创建时被覆盖。如何使用AutoFixture在保留类型自定义的同时使用自定义属性进行构建?
void Main()
{
var fixture = new Fixture();
fixture.Customize<Person>(composer => composer.With(p => p.Name, "Ben"));
var person = fixture.Build<Person>()
.With(p => p.DateOfBirth, new DateTime(1900, 1, 1))
.Create();
/* RESULT OF person below
Name null
DateOfBirth 1/1/1900
StreetAddress StreetAddressafd6b86b-376a-4355-9a9c-fbae34731453
State State019e867b-ac5e-418f-805b-a64146bc06bc
*/
}
public class Person
{
public string Name { get; set;}
public DateTime DateOfBirth { get; set;}
public string StreetAddress { get; set;}
public string State { get; set;}
}
“Name”和“DateOfBirth”属性自定义不冲突,所以我不知道为什么Name最终为null。我希望名字是“本”。 ?
我怎样才能得到它这样既定制应用(即名称=“奔”和出生日期= 1/1/1900
“AllPersonsAreNamedBen”是否将[重写](http://blog.ploeh.dk/2012/07/31/TheorderofAutoFixtureCustomizationsmatter)'AllPersonsAreBornIn1900'? –
我站好了。由于这两个定制工作在相同的类型,他们绝对会。感谢您的呼唤!这是AutoFixture的一个方面,时不时地咬我 - 我希望我可以像增量那样组合多个自定义,所以*坏*,我有时会忘记它是不可能的。 –
我更新了我的答案以纠正错误。 –