使用伪造的Faker生成随机数的地址,每个地址都具有唯一的Type-value

问题描述 投票:0回答:1

我使用伪造的https://github.com/bchavez/Bogus/生成测试数据。

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

  • 名字,
  • 姓氏
  • 地址(列表)

地址对象具有属性:

  • streetAddress,
  • 邮政编码,
  • 城市
  • addressType,

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>())  // <===

}

这将亲自创建0到3个地址,每个地址可以具有任何AddressType值,因此不会排除重复的地址。

如何解决此问题以保存以前使用的AddressType值的状态,以便只有唯一的AddressType值?

附注。不必在调用'''GetAddresses(p).Generate(faker.Random.Number(3)))//从0到3'''时增加AddressType值(3)的数量

是否可以提供一个计算AddressType枚举数量的表达式?

我正在使用Bogus https://github.com/bchavez/Bogus/生成测试数据。我有一个具有以下属性的Person对象:firstName,lastName地址(列表)Address对象具有以下属性:...

c# .net faker bogus
1个回答
0
投票

我真的不是Bogus的专家,但在我看来,最简单的方法是选择N个地址类型,然后生成N个没有类型的地址,最后为每个生成的地址设置类型。

© www.soinside.com 2019 - 2024. All rights reserved.