如何使用AutoBogus设置生成Account时Person.ID的1000-10000取值范围
实现方案
你可以通过AutoBogus的自定义属性覆盖规则实现需求,以下是两种常用实现方式:
方案1:全局配置生成规则(所有Person实例生效)
创建AutoFaker实例时注册Person类型的自定义生成逻辑,后续所有通过该Faker实例生成的Person对象(包括Account的Owners列表中的成员)都会自动应用ID范围规则:
Dim fk = AutoFaker.Create(Function(config) ' 注册Person类型的自定义生成规则 config.WithOverride(Of Person)(Sub(person, context) ' 生成1000-10000区间的整数,转为字符串后赋值给ID属性 person.ID = context.Faker.Random.Int(1000, 10000).ToString() End Sub) End Function) Dim acct = fk.Generate(Of Account)
方案2:单次生成生效(仅当前Account生成时生效)
如果不想修改全局配置,仅在本次生成Account对象时应用ID规则,可以在调用Generate方法时单独配置覆盖逻辑:
Dim fk = AutoFaker.Create() Dim acct = fk.Generate(Of Account)(Sub(generateContext) generateContext.WithOverride(Of Person)(Sub(person, context) person.ID = context.Faker.Random.Int(1000, 10000).ToString() End Sub) End Sub)
注意事项
因为你定义的Person.ID是String类型,所以生成随机整数后需要调用ToString()做类型转换,避免出现类型不匹配的报错。如果后续将ID修改为数值类型,直接去掉ToString()调用即可。
内容的提问来源于stack exchange,提问作者user3574075
相关产品推荐
相关产品推荐

