Я использую Bogus https://github.com/bchavez/Bogus/ для генерации тестовых данных.
У меня есть Person-объект со свойствами:
- firstName,
- lastName
- адреса (список)
Address-Object имеет свойства:
- streetAddress,
- zipCode,
- city
- addressType,
AddressType имеет перечисления: {"work", "home", "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?
Примечание. Вместо того, чтобы фиксировать число AddressType-values (3) в вызове '' 'GetAddresses (p) .Generate (faker.Random.Number (3))) // от 0 до 3' ''
Можно ли предоставить выражение, которое подсчитывает количество перечислений AddressType?