Попытка создать крупномасштабный набор тестовых данных с помощью Bogus
Я пытаюсь сгенерировать набор тестовых данных производственного качества и размера-количества с помощью Bogus, и эта библиотека очень хорошо работает с базовыми данными - простыми типами данных, такими как int
или же string
такие вещи, как имя и фамилия и т. д.
В настоящее время я не вижу, как я могу справиться с двумя сценариями в моей настройке тестовых данных:
для определенных атрибутов объекта я хотел бы иметь возможность определить что-то вроде "в 20-30% случаев, используйте
NULL
вместо генерации значения " - возможно ли это как-то?в других случаях мне нужно случайным образом выбрать объект из списка доступных объектов - но мне нужно использовать этот выбранный объект, чтобы установить более одного атрибута для моего генерируемого объекта. Например, для "заказа" я мог бы выбрать "Город" из данного списка возможных городов - и как только у меня будет город, я хочу установить
CityName
,State
а такжеZipCode
моего "заказа" объекта из этого, выбранного города. Я не нашел способ сделать это (пока) - кто-нибудь?
1 ответ
Для предоставления нуля иногда вы можете просто выбрать случайное число в диапазоне 0-100 и сгенерировать значение, только если оно превышает порог:
// generate null in 30% of cases RuleFor(o => o.Item, f => f.Random.Number(0, 100) >= 30 ? f.Name.FullName() : null)
Чтобы использовать выбранный объект - просто используйте это свойство в правиле следования:
// u in lambda represents whole object RuleFor(o => o.City, f => f.PickRandom(cities)). RuleFor(o => o.CityName, (f, u) => u.City.Name)