C# Bogus
最后修改于 2023 年 7 月 5 日
在本文中,我们将展示如何使用 Bogus 库在 C# 中生成假数据。
Bogus 是一个简单的 .NET 假数据生成器。 它受到 faker.js 的启发。
假数据在构建和测试我们的应用程序时非常有用。
我们可以使用经典的、过程式的或流畅的语法来生成假数据。
$ dotnet add package Bogus
在一个项目中,我们添加 Bogus 包。
C# Bogus 简单示例
以下是一个生成假数据的简单示例。
Program.cs
using Bogus;
var occupations = new string[] { "gardener", "teacher", "writer", "programmer" };
var faker = new Faker<User>()
.RuleFor(u => u.Name, f => f.Name.FullName())
.RuleFor(u => u.Occupation, f => f.PickRandom(occupations));
var res = faker.Generate(5);
Console.WriteLine(string.Join("\n", res));
public class User
{
public string? Name;
public string? Occupation;
public override string ToString()
{
return $"{Name} {Occupation}";
}
}
该程序生成假的用戶数据。
var occupations = new string[] { "gardener", "teacher", "writer", "programmer" };
var faker = new Faker<User>()
.RuleFor(u => u.Name, f => f.Name.FullName())
.RuleFor(u => u.Occupation, f => f.PickRandom(occupations));
假数据是使用定义的规则生成的。 使用流畅的语法,我们生成具有 faker 全名和随机职业的用戶,这些职业是从给定的数组中选择的。
var res = faker.Generate(5);
我们生成五个假用户。
public class User
{
public string? Name;
public string? Occupation;
public override string ToString()
{
return $"{Name} {Occupation}";
}
}
我们使用两个属性Name 和 Occupation 定义 User 类型。
$ dotnet run Donny Torphy gardener Ansel Hauck teacher Edyth Friesen programmer Constantin Howe programmer Dayana Gorczany teacher
C# Bogus 经典语法
我们可以使用过程语法生成假数据。
Program.cs
using Bogus;
var faker = new Faker();
var fname = faker.Person.FirstName;
var lname = faker.Person.LastName;
var email = faker.Person.Email;
Console.WriteLine($"{fname} {lname} {email}");
该程序为一个人物创建假数据,包括名字、姓氏和电子邮件。
$ dotnet run Connie Trantow Connie14@hotmail.com
C# Bogus 国际化数据
我们可以使用各种语言创建数据。
Program.cs
using Bogus;
var fakerSk = new Faker("sk");
var fname = fakerSk.Person.FirstName;
var lname = fakerSk.Person.LastName;
var email = fakerSk.Person.Email;
Console.WriteLine($"{fname} {lname} {email}");
var fakerRu = new Faker("ru");
var fname2 = fakerRu.Person.FirstName;
var lname2 = fakerRu.Person.LastName;
var email2 = fakerRu.Person.Email;
Console.WriteLine($"{fname2} {lname2} {email2}");
该程序以斯洛伐克语和俄语创建假数据。
var fakerSk = new Faker("sk");
该区域设置传递给 Faker 的构造函数。
$ dotnet run Matej Farkašovský Matej48@gmail.com Валентин Кузьмин Valentin_Kuzmin39@gmail.com
C# Bogus 按类型生成假数据
我们可以按类型生成假数据。
Program.cs
using Bogus;
var faker = new Faker<Item>()
.RuleForType(typeof(string), f => f.Lorem.Word())
.RuleForType(typeof(int), f => int.MaxValue)
.RuleFor(u => u.Weight, f => f.Random.Double(100, 200));
var res = faker.Generate(3);
Console.WriteLine(string.Join("\n", res));
public class Item
{
public string? Name;
public int Quantity;
public double Weight;
public override string ToString()
{
return $"{Name} {Quantity} {Weight}";
}
}
在该程序中,我们为字符串、整数和双精度浮点数生成假数据。
var faker = new Faker<Item>()
.RuleForType(typeof(string), f => f.Lorem.Word())
.RuleForType(typeof(int), f => int.MaxValue)
.RuleFor(u => u.Weight, f => f.Random.Double(100, 200));
这些规则基于 Item 类的属性类型。
$ dotnet run maxime 2147483647 199.6262336436771 dolore 2147483647 189.21804805485243 tempora 2147483647 111.86314197682654
C# Bogus 伪造日期
通过 Date 属性,我们可以创建假日期。
Program.cs
using Bogus;
var now = DateTime.Now;
Console.WriteLine($"{now}");
var faker = new Faker();
Console.WriteLine(faker.Date.Future(20));
Console.WriteLine(faker.Date.Past(50));
Console.WriteLine(faker.Date.Between(new DateTime(2022, 1, 1),
new DateTime(2025, 1, 1)));
在该示例中,我们在未来、过去以及给定的范围内创建假的日期时间值。
Console.WriteLine(faker.Date.Future(20));
在这里,我们创建一个最长为未来 20 年的假日期时间。
Console.WriteLine(faker.Date.Past(50));
我们创建一个最长可追溯到 50 年前的日期时间值。
Console.WriteLine(faker.Date.Between(new DateTime(2022, 1, 1),
new DateTime(2025, 1, 1)));
此行在指定的两个日期时间之间创建一个日期时间值。
$ dotnet run 9/8/2022 5:17:07 PM 1/16/2027 6:56:03 PM 1/29/1979 8:21:46 AM 1/12/2023 6:54:39 PM`
来源
在本文中,我们使用 Bogus 库在 C# 中生成了假数据。
作者
列出所有 C# 教程。