使用 AutoBogus 设置成员 属性 取值范围

Using AutoBogus to set member property value range

我有以下 classes:

  Class Person
    Property ID As String = Nothing
    Property Firstname As String = ""
    Property Lastname As String = ""
  End Class

  Class Account
    Property AccountNumber As String = ""
    Property Owners As New List(Of Person)
  End Class

当我像这样实例化帐户 class 的实例时,我希望您使用 https://github.com/nickdodd79/AutoBogus 为 Person.ID 设置从 1,000 到 10,000 的值范围:

    Dim fk = AutoFaker.Create()
    Dim acct = fk.Generate(Of Account)

请问我如何使用 AutoBogus 做到这一点?

AutoBogus 的最初设计是为单元测试生成小对象图。生成您需要的数字可能会对性能产生影响。但是,如果以上是您要生成的内容并且没有比这更复杂的内容,那么它可能足够小而可以成功。

要开箱即用 AutoBogus,您可以执行以下操作:

Dim acct = AutoFaker.Generate(Of Account, 1000)

第二个参数应该是您要创建的帐户数。

AutoBogus 在后台使用 Bogus,然后利用反射来填充未设置的属性。如果您确实看到任何性能问题,您可以直接使用 Bogus 并注意您需要为每个 属性 定义一个 RuleFor。 Bogus docs 提供了有关如何实现此目的的深入细节。

尼克。

根据假作者 bchavez 在 https://github.com/bchavez/Bogus/issues/394.

提供的答案修改的解决方案
Sub Main
   Dim personFaker = New AutoFaker(Of Person)
   personFaker.RuleFor(Function(p) p.Firstname, Function(f) f.Name.FirstName)
              .RuleFor(Function(p) p.Lastname, Function(f) f.Name.LastName)
              .RuleFor(Function(p) p.ID, Function(f) f.Random.Int(1000,10000).ToString)

   Dim accountFaker = New AutoFaker(Of Account)
   accountFaker.RuleFor(Function(a) a.AccountNumber, Function(f) f.Random.Replace("###############"))
               .RuleFor(Function(a) a.Owners, Function(f) New List(Of Person)(personFaker.GenerateBetween(1,5)))
   accountFaker.Generate().Dump()
End Sub

Class Person
   Property ID As String = Nothing
   Property Firstname As String = ""
   Property Lastname As String = ""
End Class

Class Account
   Property AccountNumber As String = ""
   Property Owners As New List(Of Person)
End Class