Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 生成一个随机数目的地址,每个地址都有一个唯一的伪造类型值_C#_.net_Faker_Bogus - Fatal编程技术网

C# 生成一个随机数目的地址,每个地址都有一个唯一的伪造类型值

C# 生成一个随机数目的地址,每个地址都有一个唯一的伪造类型值,c#,.net,faker,bogus,C#,.net,Faker,Bogus,我使用伪造的生成测试数据 我有一个具有以下属性的Person对象: 名字 姓氏 地址(名单) 地址对象具有以下属性: 街道地址 zipCode 城市 地址类型 AddressType具有枚举:{“工作”、“家庭”、“SPAR”} 我想创建一个随机数目的个人地址,介于0和AddressType中的值之间,在本例中为3。每个创建的地址都应具有唯一的AddressType值 到目前为止,我所尝试的: void Main() { var fakePersons = new Faker&l

我使用伪造的生成测试数据

我有一个具有以下属性的Person对象:

  • 名字
  • 姓氏
  • 地址(名单)
地址对象具有以下属性:

  • 街道地址
  • zipCode
  • 城市
  • 地址类型
AddressType具有枚举:{“工作”、“家庭”、“SPAR”}

我想创建一个随机数目的个人地址,介于0和AddressType中的值之间,在本例中为3。每个创建的地址都应具有唯一的AddressType值

到目前为止,我所尝试的:

void Main()
{
    var fakePersons = new Faker<Person>(locale)
      .RuleFor(p => p.firstName, f => f.Name.FirstName(f.Person.Gender))
      .RuleFor(p => p.lastName, f => f.Name.LastName(f.Person.Gender))
      .RuleFor(p => p.addresses, (f, p) => GetAddresses(p).Generate(faker.Random.Number(3))) // from 0 to 3
}

private Faker<Address> GetAddresses(Person p)
{
    return new Faker<Address>(locale)
        .RuleFor(a => a.streetAddress, f => f.Address.StreetAddress())
        .RuleFor(a => a.city, f => f.Address.City())
        .RuleFor(a => a.zipCode, f => f.Address.ZipCode())
        .RuleFor(a => a.addressType, f => f.PickRandom<AddressType>())  // <===

}
void Main()
{
var fakePersons=新的伪造者(地区)
.RuleFor(p=>p.firstName,f=>f.Name.firstName(f.Person.Gender))
.RuleFor(p=>p.lastName,f=>f.Name.lastName(f.Person.Gender))
.RuleFor(p=>p.addresses,(f,p)=>GetAddresses(p).Generate(faker.Random.Number(3))//从0到3
}
私人伪造者地址(p人)
{
返回新的伪造者(区域设置)
.RuleFor(a=>a.streetAddress,f=>f.Address.streetAddress())
.RuleFor(a=>a.city,f=>f.Address.city())
.RuleFor(a=>a.zipCode,f=>f.Address.zipCode())

.RuleFor(a=>a.addressType,f=>f.PickRandom())/我真的不是伪造的专家,但在我看来最简单的方法是选择N个地址类型,然后生成N个没有类型的地址,最后为每个生成的地址设置类型

private static readonly AddressType[] AllAddressTypes = Enum.GetValues(typeof(AddressType))
                                                       .Cast<AddressType>()
                                                       .ToArray();

private ICollection<Address> GetRandomAddresses(Faker faker, Person p)
{
    // Select random number of addresses,
    // and the same number of random address types
    var num = faker.Random.Number(AllAddressTypes.Length);
    var types = faker.PickRandom(AllAddressTypes, num).ToArray();


    // Build the addresses, without type
    var addresses = GetAddresses(p).Generate(num);  

    // Set the address type for each new address
    for(var i = 0; i < addresses.Count; ++i) {
        addresses[i].addressType = types[i];
    }   
    return addresses;
}
private static readonly AddressType[]AllAddressTypes=Enum.GetValues(typeof(AddressType))
.Cast()
.ToArray();
私人ICollection GetRandomAddresses(伪造者,个人p)
{
//选择随机数目的地址,
//和相同数量的随机地址类型
var num=faker.Random.Number(AllAddressTypes.Length);
var types=faker.PickRandom(AllAddressTypes,num.ToArray();
//构建地址,不使用类型
var addresses=GetAddresses(p).Generate(num);
//为每个新地址设置地址类型
对于(变量i=0;i