如何在C#中使用Bogus去创建模拟数据
Bogus, 一个基于C#的简单数据生成器。使用Bogus生成模拟数据, 你只需要定义规则并生成数据即可,就是这么简单。而且Bogus可以生成固定数据或者变化数据。这样一旦你拿到了这些数据,你就可以把它们序列化成你想要的格式: json, XMl,数据库或者文本文件。
生成模拟数据
为了生成模拟数据,我们首先需要针对模拟数据创建对应的实体类。这里我们可以创建一个命令行程序,并添加一下两个类。
public class Customer{
public Guid Id {
get;
set;
}
public string Name {
get;
set;
}
public string Address {
get;
set;
}
public string CITy {
get;
set;
}
public string Country {
get;
set;
}
public string ZipCode {
get;
set;
}
public string Phone {
get;
set;
}
public string Email {
get;
set;
}
public string ContactName {
get;
set;
}
public IEnumerableOrder>
Orders {
get;
set;
}
}
public class Order{
public Guid Id {
get;
set;
}
public DateTime Date {
get;
set;
}
public Decimal OrderValue {
get;
set;
}
public bool ShipPEd {
get;
set;
}
}
在你创建好以上两个实体类之后,你就可以来添加仓储来获取模拟数据了。为了使用Bogus, 你可以使用Nuget将Bogus库添加到你的项目中。
Install-Package Bogus
相关教程:C#视频教程
下面我们就可以来添加一个仓储类来获取模拟数据了。这里我们添加一个SampleCustomerRepository类,并加入以下方法。
public IEnumerableCustomer>
GetCustomers(){
Randomizer.Seed = new Random(123456);
VAR ordergenerator = new FakerOrder>
() .RuleFor(o =>
o.Id, Guid.NewGuid) .RuleFor(o =>
o.Date, f =>
f.Date.Past(3)) .RuleFor(o =>
o.OrderValue, f =>
f.Finance.Amount(0, 10000)) .RuleFor(o =>
o.Shipped, f =>
f.Random.Bool(0.9f));
var customerGenerator = new FakerCustomer>
() .RuleFor(c =>
c.Id, Guid.NewGuid()) .RuleFor(c =>
c.Name, f =>
f.COMpany.CompanyName()) .RuleFor(c =>
c.Address, f =>
f.Address.FullAddress()) .RuleFor(c =>
c.City, f =>
f.Address.City()) .RuleFor(c =>
c.Country, f =>
f.Address.Country()) .RuleFor(c =>
c.ZipCode, f =>
f.Address.ZipCode()) .RuleFor(c =>
c.Phone, f =>
f.Phone.PhoneNumber()) .RuleFor(c =>
c.Email, f =>
f.internet.Email()) .RuleFor(c =>
c.ContactName, (f, c) =>
f.Name.FullName()) .RuleFor(c =>
c.Orders, f =>
ordergenerator.Generate(f.Random.Number(10)).ToList());
return customerGenerator.Generate(100);
}
这里的第三行代码,我们为Randomizer.Seed属性指定一个固定的随机种子,因此每次生成的数据都是一样的。如果你不希望每次都生成固定的数据,你可以去掉这行代码。
这里我们为订单和客户数据的生成定义了规则,然后我们调用了Generate方法来生成模拟数据。就是这么简单。
如上所见,Bogus提供了许多类来生成数据。例如Company类可以用来生成公司模拟数据,例如公司名称。你可以使用这些生成的数据作为你程序的模拟数据,这些数据有3种使用场景
- 单元测试的模拟测试数据
- 设计阶段的模拟数据
- 原型的模拟数据
但是我确信,你能发现更多的使用场景。
这里为了使用这些数据,你可以在Main方法中加入以下代码
static void Main(string[] args){
var repository = new SampleCustomerRepository();
var customers = repository.GetCustomers();
Console.WriteLine(JsonConvert.SerializeObject(customers, Formatting.Indented));
}
这里我们将模拟数据转换成了Json字符串,所以这里你需要添加对Newtonsoft.Json库的引用。当你运行程序之后,你会得要以下结果。
如上所见,程序生成了一个顾客的数据集,并附带了每个顾客的所有订单信息。
以上就是如何在C#中使用Bogus去创建模拟数据的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在C#中使用Bogus去创建模拟数据
本文地址: https://pptw.com/jishu/593520.html
