
[英]How to generate fake data with pre-defined list for one column while use Bogus to generate random string in another column in C# EF Core?
[英]How generate list of string with Bogus library in C#?
我使用Bogus库来生成测试数据。
例如我有一个类:
public class Person
{
public int Id {get; set;}
public List<string> Phones {get; set;} // PROBLEM !!!
}
var Ids = 0;
var test = new Faker<Person>()
.RuleFor(p => p.Id, f => Ids ++)
.RuleFor(p => p.Phones , f => /*HOW ?????*/) // How can I return random list of PhoneNumbers ???
谁能指导我如何生成伪造的预定义伪造者列表?
您还可以使用f.Make()
方法生成事物列表。 方法如下:
void Main()
{
var Ids = 0;
var test = new Faker<Person>()
.RuleFor(p => p.Id, f => Ids++)
.RuleFor(p => p.Phones, f => f.Make(3, () => f.Phone.PhoneNumber()));
//If you want a variable number of phone numbers
//in the list, replace 3 with f.Random.Number()
test.Generate(5).Dump();
}
public class Person
{
public int Id { get; set; }
public List<string> Phones { get; set; }
}
希望有帮助!
Bogus 库有一个辅助方法用于选择集合中的随机元素:
public T PickRandom<T>(IEnumerable<T> items)
该方法采用IEnumerable
,这意味着您可以创建一个 Array 或一个List<string>
来保存预定义的数据。 您可以将它与集合初始值设定项结合使用来生成您的电话列表,如下所示:
var phones = new List<string> { "111-111-111", "222-222-222", "333-333-333" };
var Ids = 0;
var test = new Faker<Person>()
.RuleFor(p => p.Id, f => Ids++)
// generate 2 phones
.RuleFor(p => p.Phones, f => new List<string> { f.PickRandom(phones), f.PickRandom(phones) });
如果你想在你的列表中生成更多的条目并且你不希望你的初始化器变大(或者你想以编程方式改变数量),你可以使用 Linq:
// generate 8 phones
.RuleFor(p => p.Phones, f => Enumerable.Range(1, 8).Select(x => f.PickRandom(phones)).ToList());
// generate 1 to 5 phones
.RuleFor(p => p.Phones, f => Enumerable.Range(1, f.Random.Int(1, 5)).Select(x => f.PickRandom(phones)).ToList());
您可以在项目的 GitHub 页面上的自述文件中找到更多信息。
这个怎么样
.RuleFor(e => e.EventContacts, f => f.Make(f.Random.Number(), () => f.PickRandom(Contacts).Id))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.