Реалистичные Фейковые Данные с Помощью Bogus. Продолжение
Начало
Генерация данных
1. Случайные ID
bookFaker.RuleFor(b => b.Id,
f => f.Random.Guid());
2. Случайный текст
Мы можем генерировать случайный текст по шаблону «Lorem Ipsum». Можно генерировать текст разной длины в буквах, словах, предложениях, параграфах и т.п.:
bookFaker.RuleFor(b => b.Title,
f => f.Lorem.Text());
3. Перечисления
Для перечислений можно использовать свойство Random, чтобы получить несколько случайных значений перечисления (в данном случае – 2, если не задать параметр – случайное количество):
bookFaker.RuleFor(b => b.Genres,
f => f.Random.EnumValues<Genre>(2));
Если нужно получить одно значение, используйте
f.Random.Enum<Genre>().4. Фиктивные данные людей
Одной из самых захватывающих функций Bogus является возможность генерировать реалистичные данные для обычных сущностей, таких как люди. Можно использовать свойство Person для генерации данных человека: имени, фамилии, пола, логина, телефона, веб-сайта и других:
bookFaker.RuleFor(b => b.Author,
f => $"{f.Person.FirstName} {f.Person.LastName}");
5. Генерация итогового класса
После определения правил мы можем сгенерировать реальные экземпляры. Нужно вызвать метод Generate, указав количество элементов для генерации:
List<Book> books = bookFaker.Generate(2);
Для генерации случайного количества элементов:
List<Book> books = bookFaker.GenerateBetween(2, 5);
Вот полный пример генерации списка книг:
private List<Book> GenerateBooks(int count)
{
Faker<Book> bookFaker = new Faker<Book>()
.RuleFor(b => b.Id,
f => f.Random.Guid())
.RuleFor(b => b.Title,
f => f.Lorem.Text())
.RuleFor(b => b.Genres,
f => f.Random.EnumValues<Genre>())
.RuleFor(b => b.Author,
f => $"{f.Person.FirstName} {f.Person.LastName}")
.RuleFor(nameof(Book.Pages),
f => f.Random.Number(100, 800))
.RuleForType(typeof(DateOnly),
f => f.Date.PastDateOnly());
return bookFaker.Generate(count);
}
Окончание следует…
Источник: https://www.code4it.dev/blog/seed-inmemory-entityframework-bogus/