Bogus لـ C# (.NET): دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هي مكتبة Bogus ولماذا تحتاجها؟

Bogus هي مكتبة قوية وسريعة وسهلة الاستخدام لتوليد بيانات وهمية (اختبارية) بلغة C# (.NET). وهي نسخة منقولة مباشرة من مكتبة JavaScript الشهيرة Faker.js. الهدف الأساسي من Bogus هو توفير وقت المطورين من كتابة كود متكرر لإنشاء مجموعات بيانات اختبارية يدويًا.

لماذا تحتاجها؟ تخيل أنك تطور تطبيقًا يتعامل مع المستخدمين أو الطلبات أو المنتجات أو أي كيانات أخرى. لاختبار الوظائف (اختبارات الوحدة، اختبارات التكامل، اختبارات الأداء) ستحتاج دائمًا إلى بيانات: أسماء، عناوين، بريد إلكتروني، أرقام هواتف، نصوص، أرقام، تواريخ، إلخ. إن إنشاء 1000 كائن User ببيانات مختلفة يدويًا هو أمر ممل ويستغرق وقتًا طويلاً وعرضة للأخطاء. Bogus يحل هذه المشكلة بسطر واحد من الكود.

المزايا الرئيسية لـ Bogus:

  • التدويل (Localization): دعم عشرات اللغات والتنسيقات الإقليمية (ar, en, de, fr، إلخ).
  • المرونة: يمكنك توليد بيانات وفقًا لقواعد العمل (مثل "يجب أن يكون السعر أكبر من 0 وأقل من 1000").
  • قابلية التكرار: باستخدام seed (بذرة)، يمكنك الحصول على نفس مجموعات البيانات في كل تشغيل - وهو أمر بالغ الأهمية للاختبارات القابلة للتكرار.
  • الأداء العالي: Bogus محسّن لتوليد ملايين السجلات في ثوانٍ.
  • أمان الأنواع (Type Safety): يعمل مع الفئات والواجهات الخاصة بك باستخدام الكتابة القوية في C#.

تثبيت Bogus

يتم توزيع Bogus كحزمة NuGet. يمكن تثبيتها بعدة طرق:

1. عبر .NET CLI (موصى به)

dotnet add package Bogus

2. عبر Package Manager Console (في Visual Studio)

Install-Package Bogus

3. عبر واجهة NuGet Package Manager في Visual Studio

افتح "Manage NuGet Packages"، ابحث عن "Bogus" ثم اضغط "Install".

بعد التثبيت، أضف التوجيه using إلى الكود الخاص بك:

using Bogus;

بداية سريعة: المثال الأول

لنقم بتوليد مجموعة بسيطة من كائنات Person بأسماء وعناوين عربية.

using Bogus;

// 1. إنشاء "القواعد" (Faker) لتوليد البيانات
//    تحديد اللغة "ar" للبيانات العربية
var faker = new Faker("ar");

// 2. توليد 10 أشخاص وهميين
for (int i = 0; i < 10; i++)
{
    var person = new
    {
        Name = faker.Name.FullName(),    // الاسم الكامل
        Email = faker.Internet.Email(),  // البريد الإلكتروني
        Phone = faker.Phone.PhoneNumber(), // رقم الهاتف
        City = faker.Address.City(),     // المدينة
        Age = faker.Random.Int(18, 80)   // العمر من 18 إلى 80
    };

    Console.WriteLine($"{person.Name}, {person.Age} سنة, {person.City}, {person.Email}, {person.Phone}");
}

// مثال على المخرجات (ستتغير في كل تشغيل):
// أحمد محمد علي, 34 سنة, الرياض, ahmed@example.com, +966 55 123 4567
// سارة خالد عبدالله, 27 سنة, جدة, sara@test.com, +966 50 987 6543
// ...

كيف يعمل هذا؟ new Faker("ar") ينشئ كائن المولد الرئيسي. خصائصه Name و Internet و Phone و Address و Random هي "فئات" (API) مدمجة، كل منها يحتوي على عشرات الطرق لتوليد بيانات محددة.

الطرق والوظائف الأساسية في Bogus

توفر Bogus عددًا هائلاً من الطرق. فيما يلي أكثر من 10 فئات استخدامًا وطرقها الرئيسية مع أمثلة مفصلة.

1. Name — توليد الأسماء

الوظيفة: توليد الأسماء الأولى، أسماء العائلة، الكنية (للغة العربية)، الأسماء الكاملة، البادئات واللواحق.

المعاملات: معظم الطرق لا تتطلب معاملات، ولكن هناك تحميلات زائدة

توصيات