【awesome-dotnet-core-learning】(3)-Bogus-假數據生成器

【awesome-dotnet-core-learning】(3)-Bogus-假數據生成器

簡介

Bogus一個簡單而強大的假數據生成器,用於C#,F#和VB.NET.從著名的faker.js移植過來.git

在測試或者須要一些虛擬的數據時,Bogus就能夠派上用場了.這是一個移植自faker.js的一個.NET的庫,幫助你快速生成看起來有意義的假數據.該項目已經發展很長時間了,在不少有名的項目中都有使用.github

特色

  • 簡單而又強大的數據生成
  • 內置多種假數據集(用戶名,公司名,郵箱地址,地址等)
  • 假數據支持本地化(如中文,日文,韓文等)
  • 多種API語法:流式,非流式
  • 龐大而活躍的社區

快速上手

如下示例演示了用Bogus生成一個假的用戶信息例子.該用戶包含如下屬性:json

  • 名字
  • 年齡
  • 性別
  • 公司
  • 電話
  1. 建立一個.NET Core的命令行應用程序(詳細步驟略)
  2. 使用Nuget安裝Bogus:c#

    Install-Package Bogus
  3. 爲了輸出生成的用戶的信息,咱們再安裝著名的Json.Net:api

    Install-Package Newtonsoft.Json
  4. Program.cs中,咱們先建立User的類定義:dom

    class User
    {
        /// <summary>
        /// 名字
        /// </summary>
        public string Name { get; set; }
    
        /// <summary>
        /// 年齡
        /// </summary>
        public int Age { get; set; }
    
        /// <summary>
        /// 性別
        /// </summary>
        /// <remarks>這裏使用Bogus已經定義好的性別枚舉類型</remarks>
        public Name.Gender Gender { get; set; }
    
        /// <summary>
        /// 公司
        /// </summary>
        public string Company { get; set; }
    
        /// <summary>
        /// 電話
        /// </summary>
        public string Phone { get; set; }
    }
  5. Main方法中,咱們使用Bogus提供的流式API爲User定義生成規則:測試

    // 用戶數據生成規則
    var fakerPerson = new Faker<User>("zh_CN")                                      // 使用中文數據
            .RuleFor(p => p.Name, f => f.Name.FullName())                           // 隨機漢字名
            .RuleFor(p => p.Age, f => f.Random.Number(1, 100))                      // 隨機年齡(1-100歲)
            .RuleFor(p => p.Gender, f => f.PickRandom<Name.Gender>())               // 隨機性別
            .RuleFor(p => p.Company, p => p.Company.CompanyName())                  // 隨機公司名稱
            .RuleFor(p => p.Phone, p => p.Phone.PhoneNumber("1##########"))         // 隨機手機號
        ;

    能夠看到,Bogus內置了多種數據集,如姓名,公司和電話等,可方便的生成各類類型的假數據.更多的數據集可查閱文檔Bogus API Support命令行

  6. 生成數據code

    // 生成測試用戶
    var person = fakerPerson.Generate();
  7. 使用Json.Net輸出數據orm

    // 輸出測試用戶數據
    string json = JsonConvert.SerializeObject(person, Formatting.Indented);
    Console.WriteLine(json);

    輸出結果:

    {
        "Name": "謝 擎宇",
        "Age": 39,
        "Gender": 0,
        "Company": "展鵬, 智宸 and 思",
        "Phone": "13691393533"
    }

相似庫

相關文章
相關標籤/搜索