Попытка создать крупномасштабный набор тестовых данных с помощью Bogus - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь сгенерировать набор тестовых данных качества продукции и -количества с помощью Bogus , и эта библиотека очень хорошо работает с основными данными - простыми типами данных, такими как int или string, такие вещи, как имя и фамилия и т. д.

В настоящее время я не вижу, как я могу справиться с двумя сценариями в моей настройке тестовых данных:

  • для определенных атрибутов объекта, я хотел бы иметь возможность определить что-то вроде «в 20-30% случаев, используйте NULL вместо генерации значения» - возможно ли это как-то

  • в других случаях мне нужно случайным образом выбрать объект из списка доступных объектов - но мне нужно использовать этот выбранный объект, чтобы установить более одного атрибута для генерируемого объекта. Например. для «заказа» я мог бы выбрать «Город» из данного списка возможных городов - и как только у меня будет город, я хочу установить CityName, State и ZipCode моего »заказа "объект из этого, выбранного города. Я не нашел способ сделать это (пока) - кто-нибудь принимает?

1 Ответ

0 голосов
/ 25 апреля 2018
  • Иногда для предоставления нуля вы можете просто выбрать случайное число в диапазоне 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)
    
...