使用 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
我有以下 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