好的,解决了我的问题。
给定类类型的对象生成可以通过 Fixture.Register 方法完成。您可以创建一个方法来返回您想要覆盖的类型,并且将使用该方法而不是默认值。
为了获得有意义的数据,我只使用了 Faker.Net。
我得到了 Mark 指出的解决方案,并且非常喜欢它用于一般 POJO,但在我的情况下,我的许多对象都具有只能通过构造函数或聚合设置器(如 ChangeContactInfo)设置的属性,所以不幸的是我需要一些东西更有针对性。这是我实现名称和地址生成覆盖的解决方案的示例:
public class CustomObjectGeneration : ICustomization
{
public void Customize(IFixture fixture)
{
fixture.Register(GenerateAddress);
fixture.Register(GeneratePersonName);
}
private Address GenerateAddress()
{
return new Address(Faker.Address.StreetAddress(), Faker.Address.SecondaryAddress(), Faker.Address.City(),
Faker.Address.ZipCode(), Faker.Address.UsState(), Faker.Address.Country());
}
private PersonName GeneratePersonName()
{
return new PersonName(Faker.Name.Prefix(), Faker.Name.First(), Faker.Name.First(), Faker.Name.Last(), Faker.Name.Suffix());
}
}