Как генерировать валидные данные?
Активные читатели моего канала могут подумать, что сейчас будет очередной пост про какую-нибудь кастомизацию AutoFixture, ведь все знают, как библиотека генерирует строки и числа.
А вот и нет! В сегодняшнем разговоре о генерации данных ключевое слово валидные.
Ответ на вопрос в заголовке: Bogus.
Да, для C# существует не один генератор данных.
Но разница проявляется как в назначении, так и в устройстве.
AutoFixture - это скорее некоторое подобие DI контейнера с CQRS архитектурой.
Bogus - инструмент, больше похожий на FluentValudation.
Для каждой модельки создаётся специальный генератор.
В нём с помощью
Таким образом, данные получаются осмысленными.
В арсенале богуса есть адреса, имена, различные локали, схемы генерации, расширяемость и многое другое.
Активные читатели моего канала могут подумать, что сейчас будет очередной пост про какую-нибудь кастомизацию AutoFixture, ведь все знают, как библиотека генерирует строки и числа.
А вот и нет! В сегодняшнем разговоре о генерации данных ключевое слово валидные.
Ответ на вопрос в заголовке: Bogus.
Да, для C# существует не один генератор данных.
Но разница проявляется как в назначении, так и в устройстве.
AutoFixture - это скорее некоторое подобие DI контейнера с CQRS архитектурой.
Bogus - инструмент, больше похожий на FluentValudation.
Для каждой модельки создаётся специальный генератор.
В нём с помощью
fluent interface api
всем полям прописываются правила по заполнению значений.
public class OrderFaker : Faker<Order>
{
public OrderFaker()
{
RuleFor(o => o.OrderId, f => f.Guid.NewGuid());
RuleFor(o => o.Item, f => f.Lorem.Sentence());
RuleFor(o => o.Quantity, f => f.Random.Number(1, 10));
}
}
var orderFaker = new OrderFaker();
var order = orderFaker.Generate();
Таким образом, данные получаются осмысленными.
В арсенале богуса есть адреса, имена, различные локали, схемы генерации, расширяемость и многое другое.