0

我有以下课程:

  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

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

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

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

4

2 回答 2

1

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

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

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

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

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

缺口。

于 2021-10-10T21:40:49.867 回答
0

解决方案修改自伪造作者 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
于 2021-10-13T02:57:35.727 回答