3

我正在尝试使用Bogus生成生产质量和数量大小的测试数据集,并且该库非常适用于基本数据 - 简单的数据类型,如intor string,名字和姓氏等。

我目前没有看到如何在我的测试数据设置中处理两种情况:

  • 对于对象的某些属性,我希望能够定义类似“在 20-30% 的情况下,使用 aNULL而不是生成值”之类的东西——这可能吗?

  • 在其他情况下,我需要从可用对象列表中随机选择一个对象 - 但我需要使用那个已选择的对象来为正在生成的对象设置多个属性。例如,对于“订单”,我可能想从给定的可能城市列表中选择一个“城市” - 一旦我有了一个城市,我想从那个选定的城市设置我的“订单”对象的CityName,StateZipCode. 我还没有找到一种方法来做到这一点(还) - 任何接受者?

4

1 回答 1

2
  • 要提供 null 有时您可以选择 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)
    
于 2018-04-25T11:30:53.387 回答