C# Bogus
last modified July 5, 2023
In this article we show how to generate fake data in C# using the Bogus library.
Bogus is a simple fake data generator for .NET. It is inspired by faker.js.
Fake data is useful when building and testing our application.
We can use a classic, procedural or a fluent syntax to generate fake data.
$ dotnet add package Bogus
Inside a project, we add the Bogus package.
C# Bogus simple example
The following is a simple example that generates fake data.
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}";
}
}
The program generates fake user data.
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));
The fake data is generated using defined rules. With fluent syntax, we generate users with a faker full name and a random occupation, which is picked from the given array.
var res = faker.Generate(5);
We generate five fake users.
public class User
{
public string? Name;
public string? Occupation;
public override string ToString()
{
return $"{Name} {Occupation}";
}
}
We define the User type with two attributes: Name and
Occupation.
$ dotnet run Donny Torphy gardener Ansel Hauck teacher Edyth Friesen programmer Constantin Howe programmer Dayana Gorczany teacher
C# Bogus classic syntax
We can generate fake data with a procedural syntax.
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}");
The program creates a fake data for a person, consisting of a first name, last name, and email.
$ dotnet run Connie Trantow Connie14@hotmail.com
C# Bogus internationalized data
We can create data in various languages.
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}");
The program creates fake data in Slovak and Russian.
var fakerSk = new Faker("sk");
The local is passed to the constructor of the Faker.
$ dotnet run Matej Farkašovský Matej48@gmail.com Валентин Кузьмин Valentin_Kuzmin39@gmail.com
C# Bogus fake data by type
We can generate fake data by type.
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}";
}
}
In the program, we generate fake data for strings, integers, and doubles.
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));
The rules are based on the types of the attributes of the Item
class.
$ dotnet run maxime 2147483647 199.6262336436771 dolore 2147483647 189.21804805485243 tempora 2147483647 111.86314197682654
C# Bogus faking dates
Via the Date property, we can create fake dates.
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)));
In the example, we create fake datetime values in the future, past, and between the tiven range.
Console.WriteLine(faker.Date.Future(20));
Here, we create a fake datetime max 20 years in the future.
Console.WriteLine(faker.Date.Past(50));
We create a datetime value max 50 years back in time.
Console.WriteLine(faker.Date.Between(new DateTime(2022, 1, 1),
new DateTime(2025, 1, 1)));
This line creates a datetime value between the specified two datetimes.
$ 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`
Source
In this article we have generated fake data in C# using Bogus library.
Author
List all C# tutorials.