Если вы хотите, чтобы Bogus генерировал "иногда нулевые" значения в правилах, вы можете использовать удобный метод расширения .OrNull()
.В следующем примере показано, как сгенерировать пустые значения с вероятностью 20%:
void Main()
{
var userFaker = new Faker<User>()
.RuleFor( u => u.FirstName, f => f.Name.FirstName())
.RuleFor( u => u.LastName, f => f.Name.LastName().OrNull(f, .2f) );
userFaker.Generate(10).Dump();
}
public class User{
public string FirstName{get;set;}
public string LastName{get;set;}
}
Также можно удалить вспомогательный метод ReturnGenderType
и использоватьвместо этого f => f.Person
свойство.Подводя итог, вот как ваш код очищается:
void Main()
{
var userFaker = new Faker<User>()
.RuleFor(u => u.Gender, f => f.Person.Gender.ToString())
.RuleFor(u => u.BirthDate, f => f.Date.PastOffset(60, DateTime.Now.AddYears(-18)).Date.ToShortDateString())
.RuleFor(u => u.FirstName, f => f.Person.FirstName)
.RuleFor(u => u.MiddleName, f => f.Name.FirstName(f.Person.Gender).OrNull(f, .2f))
.RuleFor(u => u.LastName, f => f.Person.LastName)
.RuleFor(u => u.Salutation, f => f.Name.Prefix(f.Person.Gender));
userFaker.Generate(10).Dump();
}
public class User
{
public string Gender { get; set; }
public string BirthDate { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string Salutation { get; set; }
}
Кстати, Приветствие , сгенерированное f.Name.Prefix(Gender)
иногда неверен, потому что префиксы пола не разделены в en
локали.Если это проблема, вы можете расширить Bogus чуть-чуть с помощью метода расширения, который исправит вашу локаль:
public static class MyExtensionsForBogus{
public static string Prefix2(this Bogus.DataSets.Name name, Gender gender)
{
if (gender == Gender.Male)
{
return name.Random.ArrayElement(new[] { "Mr.", "Dr." });
}
return name.Random.ArrayElement(new[]{"Miss", "Ms.", "Mrs."});
}
}
Затем новое правило Salutation становится:
.RuleFor(u => u.Salutation, f => f.Name.Prefix2(f.Person.Gender));
И теперь у вас есть несколько приятных на вид данных:
Надеюсь, это поможет!=)