في هذا الدرس 6تصفّح المواضيع
يأتي إطار Laravel مزوداً بملف phpunit.xml مُعد مسبقاً يضبط بيئة التشغيل تلقائياً على APP_ENV=testing ويحول سواقات الكاش والجلسات والبريد إلى مصفوفات مؤقتة في الذاكرة. يضمن هذا العزل الصارم أن تشغيل الاختبارات الآلية لن يعدل بيانات التطوير الحقيقية أو يرسل رسائل فعلية أبداً.
- بيئة الاختبار التلقائية (Automatic testing Env): يتجاوز مشغل الاختبارات متغيرات الملف البيئي باستخدام وسوم env المعرفة في phpunit.xml.
- قاعدة SQLite في الذاكرة (In-Memory SQLite Option): يتيح ضبط DB_DATABASE=:memory: تشغيل الاختبارات بسرعة فائقة داخل الذاكرة العشوائية.
- سواقات المصفوفة المؤقتة (Array Drivers): تُضبط سواقات الكاش والجلسات على array لضمان بدء كل اختبار بحالة نظيفة تماماً.
<!-- phpunit.xml environment overrides -->
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_STORE" value="array"/>
<env name="MAIL_MAILER" value="array"/>
</php>
ينظم Laravel الاختبارات الآلية داخل مجلدين رئيسيين هما tests/Unit و tests/Feature. تركز اختبارات الوحدات Unit على فحص دالة حسابية أو كلاس منفرد بمعزل عن الإطار، بينما تقوم اختبارات الميزات Feature بتشغيل حاوي خدمات Laravel لاختبار تكامل المكونات معاً في سيناريو كامل.
- مجلد اختبارات الوحدات (tests/Unit Directory): اختبارات سريعة ودقيقة للكلاسات الحسابية والدوال المساعدة المستقلة.
- مجلد اختبارات الميزات (tests/Feature Directory): اختبارات تكاملية شاملة تغطي المسارات والمتحكمات والسياسات وقواعد البيانات.
- توازن هرم الاختبار (Testing Pyramid Balance): اجمع بين اختبارات الوحدات السريعة للمنطق المعقد واختبارات الميزات لرحلات المستخدم.
namespace App\Support;
class PriceCalculator {
public function withTax(float $amount): float {
return round($amount * 1.15, 2);
}
}
استخدم الأمر php artisan make:test لتوليد ملفات اختبار جديدة تتبع التسمية القياسية في Laravel، مع إضافة الخيار --unit عند استهداف مجلد الوحدات. يتبع كل اختبار منظم نمط الترتيب والتنفيذ والتحقق: تجهيز المدخلات، ثم استدعاء الدالة المراد فحصها، وأخيراً توكيد صحة النتيجة.
- مولد ملفات الاختبار (Artisan Test Generator): نفذ الأمر php artisan make:test مع الخيار --unit لإنشاء ملف اختبار وحدة جديد.
- نمط الترتيب والتنفيذ والتحقق (Arrange-Act-Assert): قسّم كل دالة اختبار إلى ثلاث خطوات واضحة: التجهيز، التنفيذ، والتوكيد.
- التسمية الوصفية للاختبار (Descriptive Test Names): اختر أسماء دوال تشرح السلوك المتوقع بوضوح مثل حساب الضريبة بدقة.
// Generate unit test:
// php artisan make:test PriceCalculatorTest --unit
namespace Tests\Unit;
use App\Support\PriceCalculator;
use PHPUnit\Framework\TestCase;
يدعم Laravel 12 كلاً من توكيدات PHPUnit الكلاسيكية المعتمدة على الكلاسات مثل assertEquals و assertTrue، وتوقعات إطار Pest الحديثة المعتمدة على الدوال مثل expect->toBe. يعمل كلا الأسلوبين فوق نفس محرك الاختبار الأساسي ويمكنهما التواجد معاً في نفس المشروع.
- توكيدات PHPUnit (PHPUnit Assertions): استخدم دوال التوكيد القياسية مثل assertTrue و assertEquals و assertCount.
- واجهة توقعات Pest (Pest Expectation API): اكتب اختبارات موجزة وقابلة للقراءة باستخدام دالة test ودالة expect السلسة.
- المقارنة الصارمة للأنواع (Strict Comparison): فضّل استخدام assertSame أو toBe للتحقق من تطابق القيمة ونوع البيانات معاً.
// PHPUnit assertion style:
$calc = new PriceCalculator();
$this->assertEquals(115.00, $calc->withTax(100));
$this->assertTrue($calc->withTax(50) > 50);
// Pest expectation style:
expect($calc->withTax(100))->toBe(115.00);
شغّل حزمة الاختبارات الكاملة من الطرفية عبر الأمر php artisan test الذي يعرض تقريراً مقروءاً ومنظماً لنتائج كل اختبار. وأثناء تطوير ميزة معينة، مرر الخيار --filter لتشغيل دالة اختبار واحدة أو كلاس محدد في أجزاء من الثانية دون انتظار الحزمة الكاملة.
- تشغيل الحزمة الكاملة (Full Suite Execution): نفذ الأمر php artisan test لتشغيل جميع اختبارات الوحدات والميزات بالتتابع.
- التصفية الموجهة (Targeted Filtering): استخدم الخيار --filter=PriceCalculatorTest لتشغيل الاختبارات المطابقة للاسم فقط.
- التوقف عند أول خطأ (Fail-Fast Debugging): أضف الخيار --stop-on-failure لإيقاف التشغيل فوراً عند أول توكيد يفشل لتسريع الإصلاح.
// Run all Unit and Feature tests:
// php artisan test
// Run only matching test class or method:
// php artisan test --filter=PriceCalculatorTest
// php artisan test --testsuite=Unit --stop-on-failure
يمنحك إتقان أساسيات الاختبارات الآلية ثقة هندسية عالية عند تعديل الكود أو إطلاق ميزات جديدة دون الخوف من كسر الوظائف السابقة. راجع أهم خيارات توليد وتشغيل الاختبارات في Artisan ودوال التوكيد الأساسية قبل الانتقال لاختبار طلبات HTTP.
| وجه المقارنة الهندسي | الأسلوب المتزامن أو التقليدي | معيار Laravel 12 الحديث |
|---|---|---|
| آلية التحقق من الكود | تحديث المتصفح وتعبئة النماذج يدوياً بعد كل تعديل برمجي | حزم اختبارات آلية للوحدات والميزات تعمل بأمر php artisan test |
| أمان بيئة الاختبار | التجربة المباشرة على قاعدة بيانات التطوير أو الإرسال الفعلي للبريد | عزل كامل عبر بيئة testing وسواقات المصفوفة في phpunit.xml |
| وضوح التوكيدات البرمجية | استخدام جمل الطباعة المؤقتة لفحص القيم يدوياً ثم حذفها | توكيدات قياسية دائمة عبر assertEquals في PHPUnit أو expect في Pest |
| سرعة اكتشاف الأخطاء | استغراق دقائق طويلة لاختبار الحالات الحدية بعد تعديل الدوال | تنفيذ فوري في أجزاء من الثانية عبر الخيار --filter |
public function test_discount_floor(): void
{
$final = max(0, 100 - 120);
$this->assertEquals(0, $final);
$this->assertTrue($final === 0);
}
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «أساسيات الاختبارات الآلية في Laravel عبر PHPUnit و Pest» مفاهيم إعداد بيئة الاختبار المعزولة بأمان، والفرق بين اختبارات الوحدات والميزات، وتوليد ملفات الاختبار عبر Artisan وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «اختبار طلبات HTTP والعروض وتدفقات المصادقة في Laravel» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Testing Basics أساسيات الاختبار
- إعداد بيئة الاختبار المعزولة والفرق بين اختبارات الوحدات واختبارات الميزات وتشغيلها بأمر php artisan test.
- للمراجعة
- 02 Isolated Testing Environment Setup إعداد بيئة الاختبار المعزولة بأمان
- المفهوم الهندسي والتطبيق العملي المباشر لقسم إعداد بيئة الاختبار المعزولة بأمان في إطار العمل Laravel 12.
- للمراجعة
- 03 Unit Tests Versus Feature Tests الفرق بين اختبارات الوحدات والميزات
- المفهوم الهندسي والتطبيق العملي المباشر لقسم الفرق بين اختبارات الوحدات والميزات في إطار العمل Laravel 12.
- للمراجعة
- 04 Generating Test Classes with Artisan توليد ملفات الاختبار عبر Artisan
- المفهوم الهندسي والتطبيق العملي المباشر لقسم توليد ملفات الاختبار عبر Artisan في إطار العمل Laravel 12.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 MVC MVC
- Model View Controller
- النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
- للمراجعة
- 02 CLI CLI
- Command Line Interface
- واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
- للمراجعة
- 03 HTTP HTTP
- Hypertext Transfer Protocol
- بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
- للمراجعة
- 04 PSR PSR
- PHP Standards Recommendations
- المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «إعداد بيئة الاختبار المعزولة بأمان» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «الفرق بين اختبارات الوحدات والميزات» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من إعداد بيئة الاختبار المعزولة بأمان في إطار العمل Laravel 12؟
يسهم إعداد بيئة الاختبار المعزولة بأمان في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «الفرق بين اختبارات الوحدات والميزات» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة توليد ملفات الاختبار عبر Artisan بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة توليد ملفات الاختبار عبر Artisan.
لماذا يُعد تطبيق كتابة التوكيدات عبر PHPUnit وPest مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق تشغيل وتصفية حزم الاختبارات الآلية في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مرجع أساسيات وأوامر الاختبار الآلي؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.