【问题标题】:Using AutoBogus to set member property value range使用 AutoBogus 设置成员属性值范围
【发布时间】:2021-11-29 16:58:21
【问题描述】:

我有以下课程:

  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 来做到这一点?

【问题讨论】:

    标签: range faker bogus


    【解决方案1】:

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

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

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

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

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

    尼克。

    【讨论】:

    • 感谢您的 cmets 尼克。你的回答误解了我的问题。我想确保在执行以下命令时将 Person.ID 的值设置为 1,000 到 10,000 之间的值范围:``` Dim fk = AutoFaker.Create() Dim acct = fk.Generate(Of Account) ` `` 我会将问题发布到 Bogus GitHub 页面,但如果您仍能提供我的澄清答案,我将不胜感激。干杯。
    【解决方案2】:

    解决方案修改自伪造作者 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-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 2015-08-13
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多