كيفية إنشاء واستخدام السجلات المزيفة مع مصانع نموذج Laravel

نشرت: 2023-04-28

الاختبار ضروري لتطوير الويب. تحدد مصانع نموذج Laravel سجلات قاعدة البيانات بطريقة يمكن التنبؤ بها ويمكن تكرارها بسهولة بحيث تكون اختبارات تطبيقك متسقة ومتحكم بها. تحدد مصانع النماذج مجموعة من السمات الافتراضية لكل نموذج من نماذج Eloquent.

على سبيل المثال ، إذا كنت تنشئ تطبيقًا للتدوين يسمح للمؤلفين والمشرفين بالموافقة على التعليقات قبل نشرها ، فستحتاج إلى اختبار ما إذا كانت الوظيفة تعمل بشكل صحيح قبل نشرها للمستخدمين. كل هذا يتطلب بيانات الاختبار.

لاختبار تطبيق التدوين الموضح أعلاه ، تحتاج إلى بيانات التعليقات لتقليد وظائف التطبيق واختبارها. يتيح لك Laravel القيام بذلك دون الحصول على تعليقات من المستخدمين الفعليين باستخدام مصانع Laravel و Faker لإنشاء بيانات مزيفة.

تشرح هذه المقالة كيفية الحصول على بيانات التعليقات بدون تعليقات من مستخدمين حقيقيين.

المتطلبات الأساسية

لإكمال هذا البرنامج التعليمي ، يجب أن تكون على دراية بما يلي:

  • XAMPP
  • ملحن

XAMPP هو توزيع Apache مجاني وسهل التثبيت يحتوي على PHP و Perl و MariaDB - قاعدة بيانات MySQL. يستخدم هذا البرنامج التعليمي أحدث إصدار ، 8.1.10 ، والذي يقوم بتثبيت PHP 8.1.10. اقرأ هذه المقالة في حالة تثبيت XAMPP لنظام التشغيل MacOS أو هذا الدليل لنظام Linux. يستخدم هذا البرنامج التعليمي XAMPP على Windows.

Composer هي أداة تسمح لك بتحديد وتثبيت وتنزيل الحزم التي يعتمد عليها تطبيق الويب الخاص بك في التطوير والإنتاج. يستخدم هذا البرنامج التعليمي الإصدار v2.4.4 من Composer ، والذي يتطلب إصدار PHP 7.2+. يمكنك استخدام Composer لتثبيت مُثبِّت Laravel لهذا البرنامج التعليمي.

يمكنك أيضًا تنزيل الكود الكامل للمشروع لمتابعته.

لا ينبغي أن يكون اختبار تطبيقك فكرة متأخرة. يمكن لمصانع نموذج Laravel المساعدة! إليك كيف ️ انقر للتغريد

كيفية إعداد المشروع

في هذا القسم ، ستنشئ مشروع Laravel وتوصله بقاعدة بيانات. دعونا نلقي نظرة على كل ما يستلزم وكيفية تحقيقه.

ثبت Laravel Installer

لإنشاء مشروع Laravel سريعًا ، ثبّت مثبت Laravel:

 composer global require laravel/installer

يقوم هذا الكود بتثبيت مُثبِّت Laravel عالميًا على جهازك.

أنشئ مشروع Laravel

بعد ذلك ، أنشئ مشروع Laravel عن طريق تشغيل ما يلي:

 laravel new app-name

تعمل هذه الشفرة على تمهيد مشروع Laravel جديد وتثبيت جميع التبعيات:

إنشاء مشروع Laravel
إنشاء مشروع Laravel

طريقة أخرى أسهل لتثبيت Laravel هي استخدام Composer مباشرة.

 composer create-project laravel/laravel app-name

لا تحتاج إلى تثبيت مثبت Laravel عند استخدام الطريقة أعلاه.

ابدأ التطبيق

يمكنك الآن تغيير الدليل إلى اسم التطبيق وبدء المشروع باستخدام أداة واجهة سطر الأوامر (CLI) الخاصة بـ Laravel ، Artisan:

 php artisan serve

يبدأ هذا الرمز المشروع ويربطه بالمضيف المحلي: 8000 أو أي منفذ آخر متاح إذا كان المنفذ 8000 قيد الاستخدام. على المضيف المحلي: 8000 ، يجب أن ترى شيئًا مثل هذا:

الصفحة الرئيسية لموقع Laravel
Laravel

أنشئ قاعدة بيانات

لتوصيل تطبيقك بقاعدة بيانات ، يجب عليك إنشاء قاعدة بيانات جديدة باستخدام واجهة المستخدم الرسومية PHPMyAdmin من XAMPP. انتقل إلى localhost / phpmyadmin وانقر فوق جديد في الشريط الجانبي:

نموذج إنشاء قاعدة بيانات في PHPMyAdmin
إنشاء نموذج قاعدة بيانات

تُظهر الصورة أعلاه نموذج إنشاء قاعدة بيانات باسم app_name كاسم قاعدة البيانات.

انقر فوق إنشاء لإنشاء قاعدة بيانات.

قم بتحرير ملف env

لتوصيل تطبيقك بقاعدة بيانات ، يجب عليك تحرير جزء قاعدة البيانات من ملف .env :

 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=app_name DB_USERNAME=root DB_PASSWORD=

يملأ هذا الرمز بيانات اعتماد قاعدة البيانات باسم قاعدة البيانات واسم المستخدم والمنفذ وكلمة المرور والمضيف. أنت الآن جاهز لبدء إنشاء المصانع والنماذج.

ملاحظة: استبدل القيم ببيانات اعتماد قاعدة البيانات الخاصة بك. أيضًا ، إذا واجهت الخطأ "تم رفض الوصول للمستخدم" ، فضع قيم DB_USERNAME و DB_PASSWORD بين علامتي اقتباس.

كيفية إنشاء بيانات وهمية

بعد إنشاء التطبيق وربطه بقاعدة البيانات ، يمكنك الآن إنشاء الملفات الضرورية لإنشاء بيانات وهمية في قاعدة البيانات.

قم بإنشاء نموذج التعليق

قم بإنشاء ملف النموذج للتفاعل مع جداول قاعدة البيانات. لإنشاء نموذج ، استخدم Artisan:

 php artisan make:model Comment

ينشئ هذا الرمز ملف Comment.php داخل مجلد app / M odels مع بعض التعليمات البرمجية المعيارية. أضف التعليمات البرمجية التالية أدناه use HasFactory; خط:

 protected $fillable = [ 'name', 'email', 'body', 'approved', 'likes' ];

يسرد هذا الرمز الحقول التي تريد السماح بالتخصيصات الجماعية لأن Laravel يحمي قاعدة البيانات الخاصة بك من التخصيصات الجماعية افتراضيًا. يجب أن يبدو ملف نموذج التعليق الآن كما يلي:

ملف نموذج التعليق
ملف نموذج التعليق

قم بإنشاء ملف الترحيل

بعد إنشاء ملف النموذج والتصريح عن مصفوفة $fillable ، يجب عليك إنشاء ملف الترحيل باستخدام الأمر أدناه:

 php artisan make:migration create_comments_table

ملاحظة: اصطلاح التسمية لإنشاء عمليات الترحيل في Laravel هو عادة snake_case ، والمعروف أيضًا باسم underscore_case . الكلمة الأولى هي الإجراء ، والكلمة الثانية هي جمع النموذج ، والكلمة الأخيرة هي الميزة التي يتم إنشاؤها داخل المشروع. هذا يعني أنك ستكتب create_books_table عند إنشاء ترحيل لنموذج كتاب.

ينشئ هذا الرمز ملفًا يسمى yyyy_mm_dd_hhmmss_create_comments_table داخل مجلد قاعدة البيانات / التهجيرات .

بعد ذلك ، قم بتحرير الدالة up داخل yyyy_mm_dd_hhmmss_create_comments_table :

 public function up() { Schema::create('comments', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email'); $table->longText('body'); $table->boolean('approved'); $table->integer('likes')->default(0); $table->timestamps(); }); }

ينشئ هذا الرمز مخططًا يقوم بإنشاء جدول به الأعمدة: id name email body approved likes timestamps .

قم بتشغيل الهجرات

لن يؤدي إنشاء ملف الترحيل وتحريره إلى إجراء أي شيء حتى تقوم بتشغيلها باستخدام سطر الأوامر. إذا نظرت إلى مدير قاعدة البيانات ، فهو لا يزال فارغًا.

قم بتشغيل عمليات الترحيل باستخدام Artisan:

 php artisan migrate

يقوم هذا الأمر بتشغيل جميع عمليات الترحيل داخل قاعدة البيانات / عمليات الترحيل لأنها أول عملية ترحيل منذ إنشاء التطبيق:

الهجرات الناجحة
الهجرات الناجحة

تُظهر الصورة التالية جميع ملفات الترحيل التي قمت بتشغيلها. يمثل كل منها جدولًا في قاعدة البيانات:

قاعدة البيانات بعد عمليات الترحيل
قاعدة البيانات بعد عمليات الترحيل

قم بإنشاء ملف CommentFactory

قم بإنشاء ملف مصنع يحتوي على وظيفة التعريف الخاصة بك. بالنسبة لهذا العرض التوضيحي ، ستقوم بإنشاء مصنع باستخدام Artisan:

 php artisan make:factory CommentFactory.php

ينشئ هذا الرمز ملف CommentFactory .php داخل مجلد قاعدة البيانات / المصانع .

وظيفة التعريف

تحدد الوظيفة الموجودة داخل CommentFactory كيفية قيام Faker بإنشاء بيانات مزيفة. قم بتحريره ليبدو كالتالي:

 public function definition() { return [ 'name' => $this->faker->name(), 'email' => $this->faker->email(), 'body' => $this->faker->sentence(45), 'approved' => $this->faker->boolean(), 'likes' => $this->faker->randomNumber(5) ]; }

يخبر هذا الرمز فاكر بإنشاء ما يلي:

  • اسم
  • عنوان البريد الإلكتروني
  • فقرة تحتوي على 45 جملة
  • قيمة معتمدة لا يمكن إلا أن تكون صحيحة أو خاطئة
  • رقم عشوائي بين 0 و 9999

قم بتوصيل نموذج التعليق بمصنع التعليق

اربط النموذج Comment بـ CommentFactory بالتصريح عن متغير $model محمي أعلى التعريف:

 protected $model = Comment::class;

أضف أيضًا use App\Models\Comment; إلى تبعيات الملف. يجب أن يبدو ملف CommentFactory الآن على النحو التالي:

ملف CommentFactory
ملف CommentFactory

كيفية زرع قاعدة البيانات

البذر في البرمجة يعني إنشاء بيانات وهمية عشوائية لقاعدة بيانات لأغراض الاختبار.

الآن بعد أن قمت بإنشاء النموذج وتشغيل عمليات الترحيل وإنشاء التعريف داخل CommentFactory ، قم بتشغيل البذر باستخدام ملف DatabaseSeeder .

قم بإنشاء ملف CommentSeeder

قم بإنشاء ملف بذر يستخدم المصنع لإنشاء البيانات:

 php artisan make:seeder CommentSeeder.php

ينشئ هذا الرمز ملف CommentSeeder .php داخل مجلد database / seeders .

قم بتحرير وظيفة التشغيل

قم بتوصيل نموذج التعليق بـ CommentSeeder. أضف الكود التالي داخل وظيفة التشغيل:

 Comment::factory()->count(50)->create();

يخبر هذا الرمز CommentSeeder باستخدام نموذج Comment ووظيفة تعريف CommentFactory لإنشاء 50 تعليقًا داخل قاعدة البيانات. أضف أيضًا use App\Models\Comment; إلى تبعيات الملف. يجب أن يبدو ملف CommentSeeder الآن كما يلي:

ملف CommentSeeder
ملف CommentSeeder

ملاحظة: يمكنك تكوين Faker لإنشاء البيانات المحلية. على سبيل المثال ، يمكنك تعيينه لإنشاء أسماء إيطالية بدلاً من الأسماء العشوائية عن طريق تعيين faker_locale داخل ملف app / config.php على it_IT . يمكنك قراءة المزيد عن Faker Locales في هذا الدليل.

قم بتشغيل بزار

بعد ذلك ، قم بتشغيل ملف المصدر باستخدام Artisan:

 php artisan db:seed --class=CommentSeeder

يقوم هذا الرمز بتشغيل ملف المصدر ويولد 50 صفًا من البيانات المزيفة في قاعدة البيانات.

نجح إنشاء قاعدة البيانات
نجح إنشاء قاعدة البيانات

يجب أن تحتوي قاعدة البيانات الآن على 50 صفًا من البيانات المزيفة التي يمكنك استخدامها لاختبار وظائف التطبيق الخاص بك:

50 صفا من البيانات في قاعدة البيانات
50 صفا من البيانات في قاعدة البيانات

كيفية إعادة تعيين قاعدة البيانات

عند استخدام البيانات التي تم إنشاؤها للاختبار ، قم بإعادة تعيين قاعدة البيانات في كل مرة تقوم فيها بإجراء اختبار. لنفترض أنك أردت اختبار ميزة تبديل التعليق المعتمدة. قم بتحديث قاعدة البيانات بعد كل اختبار للتأكد من أن البيانات التي تم إنشاؤها مسبقًا لن تتداخل مع الاختبارات المستقبلية.

استخدم RefreshDatabase

قم بتحديث قاعدة البيانات باستخدام سمة RefreshDatabase داخل ملف الاختبار .

انتقل إلى ExampleTest.php داخل مجلد الاختبارات / Feature إلى التعليق use Illuminate\Foundation\Testing\RefreshDatabase; وأضف السطر التالي من التعليمات البرمجية فوق دالة test_the_application_returns_a_successful_response :

 use RefreshDatabase;

يجب أن يبدو ملف ExampleTest.php الآن بهذا الشكل:

ملف ExampleTest
ملف ExampleTest

قم بتشغيل الاختبار

بعد إضافة سمة RefreshDatabase إلى ملف الاختبار ، قم بإجراء الاختبار باستخدام Artisan:

 php artisan test

يقوم هذا الكود بتشغيل جميع الاختبارات في التطبيق ويقوم بتحديث قاعدة البيانات بعد الاختبارات ، كما هو موضح في الصورة أدناه:

اختبار حرفي ناجح
اختبار حرفي ناجح

الآن ، تحقق من قاعدة البيانات لرؤية جدول التعليقات الفارغ:

قاعدة بيانات تعليقات فارغة
قاعدة بيانات التعليقات الفارغة
الإدخال اليدوي للبيانات هو شيء من الماضي! أتمتة اختبار تطبيقك باستخدام Laravel Model Factories. ابدأ هنا! انقر للتغريد

ملخص

تناولت هذه المقالة كيفية إنشاء مشروع Laravel ، وتوصيله بقاعدة بيانات ، وإنشاء وتكوين النماذج ، والترحيل ، والمصنع ، وملفات المصدر لإنشاء بيانات عشوائية لقاعدة البيانات. كما ناقش كيفية إعادة تعيين قاعدة البيانات بعد إجراء الاختبارات.

لقد رأيت الآن كيف يسهّل Laravel Factories و Faker إنشاء أي كمية من بيانات الاختبار في دقائق لاختبار أحد التطبيقات أو حتى كعنصر نائب - مع الحد الأدنى من التكوين.

عندما يكون تطبيق Laravel الخاص بك جاهزًا للنشر ، يمكنك القيام بذلك على خدمات استضافة تطبيقات Kinsta بسرعة وكفاءة.