كيفية إنشاء واستخدام السجلات المزيفة مع مصانع نموذج 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 Installer
لإنشاء مشروع Laravel سريعًا ، ثبّت مثبت Laravel:
composer global require laravel/installer
يقوم هذا الكود بتثبيت مُثبِّت Laravel عالميًا على جهازك.
أنشئ مشروع Laravel
بعد ذلك ، أنشئ مشروع Laravel عن طريق تشغيل ما يلي:
laravel new app-name
تعمل هذه الشفرة على تمهيد مشروع Laravel جديد وتثبيت جميع التبعيات:
طريقة أخرى أسهل لتثبيت Laravel هي استخدام Composer مباشرة.
composer create-project laravel/laravel app-name
لا تحتاج إلى تثبيت مثبت Laravel عند استخدام الطريقة أعلاه.
ابدأ التطبيق
يمكنك الآن تغيير الدليل إلى اسم التطبيق وبدء المشروع باستخدام أداة واجهة سطر الأوامر (CLI) الخاصة بـ Laravel ، Artisan:
php artisan serve
يبدأ هذا الرمز المشروع ويربطه بالمضيف المحلي: 8000 أو أي منفذ آخر متاح إذا كان المنفذ 8000 قيد الاستخدام. على المضيف المحلي: 8000 ، يجب أن ترى شيئًا مثل هذا:
أنشئ قاعدة بيانات
لتوصيل تطبيقك بقاعدة بيانات ، يجب عليك إنشاء قاعدة بيانات جديدة باستخدام واجهة المستخدم الرسومية PHPMyAdmin من XAMPP. انتقل إلى localhost / 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 ، قم بتشغيل البذر باستخدام ملف 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 الآن كما يلي:
ملاحظة: يمكنك تكوين Faker لإنشاء البيانات المحلية. على سبيل المثال ، يمكنك تعيينه لإنشاء أسماء إيطالية بدلاً من الأسماء العشوائية عن طريق تعيين faker_locale
داخل ملف app / config.php على it_IT
. يمكنك قراءة المزيد عن Faker Locales في هذا الدليل.
قم بتشغيل بزار
بعد ذلك ، قم بتشغيل ملف المصدر باستخدام Artisan:
php artisan db:seed --class=CommentSeeder
يقوم هذا الرمز بتشغيل ملف المصدر ويولد 50 صفًا من البيانات المزيفة في قاعدة البيانات.
يجب أن تحتوي قاعدة البيانات الآن على 50 صفًا من البيانات المزيفة التي يمكنك استخدامها لاختبار وظائف التطبيق الخاص بك:
كيفية إعادة تعيين قاعدة البيانات
عند استخدام البيانات التي تم إنشاؤها للاختبار ، قم بإعادة تعيين قاعدة البيانات في كل مرة تقوم فيها بإجراء اختبار. لنفترض أنك أردت اختبار ميزة تبديل التعليق المعتمدة. قم بتحديث قاعدة البيانات بعد كل اختبار للتأكد من أن البيانات التي تم إنشاؤها مسبقًا لن تتداخل مع الاختبارات المستقبلية.
استخدم RefreshDatabase
قم بتحديث قاعدة البيانات باستخدام سمة RefreshDatabase
داخل ملف الاختبار .
انتقل إلى ExampleTest.php داخل مجلد الاختبارات / Feature إلى التعليق use Illuminate\Foundation\Testing\RefreshDatabase;
وأضف السطر التالي من التعليمات البرمجية فوق دالة test_the_application_returns_a_successful_response
:
use RefreshDatabase;
يجب أن يبدو ملف ExampleTest.php الآن بهذا الشكل:
قم بتشغيل الاختبار
بعد إضافة سمة RefreshDatabase
إلى ملف الاختبار ، قم بإجراء الاختبار باستخدام Artisan:
php artisan test
يقوم هذا الكود بتشغيل جميع الاختبارات في التطبيق ويقوم بتحديث قاعدة البيانات بعد الاختبارات ، كما هو موضح في الصورة أدناه:
الآن ، تحقق من قاعدة البيانات لرؤية جدول التعليقات الفارغ:
ملخص
تناولت هذه المقالة كيفية إنشاء مشروع Laravel ، وتوصيله بقاعدة بيانات ، وإنشاء وتكوين النماذج ، والترحيل ، والمصنع ، وملفات المصدر لإنشاء بيانات عشوائية لقاعدة البيانات. كما ناقش كيفية إعادة تعيين قاعدة البيانات بعد إجراء الاختبارات.
لقد رأيت الآن كيف يسهّل Laravel Factories و Faker إنشاء أي كمية من بيانات الاختبار في دقائق لاختبار أحد التطبيقات أو حتى كعنصر نائب - مع الحد الأدنى من التكوين.
عندما يكون تطبيق Laravel الخاص بك جاهزًا للنشر ، يمكنك القيام بذلك على خدمات استضافة تطبيقات Kinsta بسرعة وكفاءة.