使用Bogus生成Account实例时如何应用已定义的Person.ID取值规则
方法1:显式定义Account的Faker规则(更灵活)
直接复用你已经写好的fakePerson实例生成符合ID规则的Person对象,填充到Account的Owners属性中,代码如下:
' 你原有定义的Person生成规则 Dim fakePerson = New Faker(Of Person)(). StrictMode(False). Rules(Sub(c, p) p.ID = c.Random.Long(1000, 10000).ToString ' 可按需补充其他Person字段的生成规则 p.Firstname = c.Name.FirstName() p.Lastname = c.Name.LastName() End Sub ) ' 新增Account类型的生成规则 Dim fakeAccount = New Faker(Of Account)(). StrictMode(False). Rules(Sub(c, acc) acc.AccountNumber = c.Finance.Account() ' 按需自定义账号生成规则 ' 生成1-3个符合规则的Owner,数量可自行调整 acc.Owners = fakePerson.GenerateBetween(1, 3).ToList() End Sub ) ' 直接生成Account对象即可 Dim acct = fakeAccount.Generate()
方法2:全局注册规则(适配你原有写法)
如果你希望沿用Faker.Create().Generate(Of Account)的写法,可以提前把规则注册到全局配置中:
' 注册全局Person生成规则 Bogus.Faker.DefaultConfig.For(Of Person)(). StrictMode(False). Rules(Sub(c, p) p.ID = c.Random.Long(1000, 10000).ToString p.Firstname = c.Name.FirstName() p.Lastname = c.Name.LastName() End Sub) ' 注册全局Account生成规则 Bogus.Faker.DefaultConfig.For(Of Account)(). StrictMode(False). Rules(Sub(c, acc) acc.AccountNumber = c.Finance.Account() acc.Owners = c.Generate(Of Person)(count := c.Random.Int(1, 3)).ToList() End Sub) ' 就可以用你原有的代码生成符合规则的Account对象了 Dim fk = Faker.Create() Dim acct = fk.Generate(Of Account)
两种方案的核心都是复用Person的ID生成规则,不需要重复编写逻辑。如果不同场景下Account的Owner数量、账号规则有差异,优先选择第一种方案;如果项目全局都用同一套生成规则,第二种方案更方便。
内容的提问来源于stack exchange,提问作者user3574075
相关产品推荐
相关产品推荐

