Попытка создать крупномасштабный набор тестовых данных с помощью 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)
    
Другие вопросы по тегам