Pest PHP: دليل شامل مع أمثلة عملية

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

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

ابدأ الدورة

ما هو Pest PHP ولماذا تحتاجه؟

Pest هو إطار عمل حديث وأنيق لاختبار تطبيقات PHP، تم إنشاؤه بواسطة Nuno Maduro في عام 2021. على عكس الحلول التقليدية مثل PHPUnit، يقدم Pest صياغة أكثر إيجازاً وتعبيراً، مستوحاة من Jest (JavaScript) و RSpec (Ruby). إذا كان PHPUnit هو "السكين السويسري" للاختبار، فإن Pest هو "المشرط" الذي يسمح لك بكتابة اختبارات أسرع وأنظف وبكمية أقل من الكود التكراري.

الهدف الرئيسي لـ Pest هو جعل عملية كتابة الاختبارات ممتعة وبديهية قدر الإمكان. بدلاً من الفئات والطرق ذات الأسماء الطويلة، تستخدم closures وسلاسل الاستدعاءات (fluent interface). هذا مفيد بشكل خاص للمشاريع التي تهم فيها سرعة التطوير وقابلية قراءة الكود، مثل الشركات الناشئة، خدمات API، أو عند العمل في فريق حيث يكتب الاختبارات ليس فقط مهندسي ضمان الجودة ولكن أيضاً المطورون.

المزايا الرئيسية لـ Pest مقارنة بـ PHPUnit:

  • الإيجاز: كود أقل لكتابة نفس الاختبار.
  • قابلية القراءة: تبدو الاختبارات وكأنها لغة طبيعية (مثال: expect($result)->toBeTrue()).
  • دوال مدمجة: beforeEach()، afterEach()، todo() وغيرها.
  • البنية: لا يتطلب وراثة إجبارية من TestCase.
  • النظام البيئي: إضافات لـ Laravel و Livewire و Mockery وأدوات شائعة أخرى.

تثبيت Pest

يتم تثبيت Pest عبر Composer - مدير الحزم القياسي لـ PHP. تأكد من تثبيت PHP إصدار 8.0 أو أعلى.

أنشئ مشروعاً جديداً أو انتقل إلى الدليل الجذري لمشروعك الحالي:

mkdir my-pest-project
cd my-pest-project
composer init --yes

قم بتثبيت Pest كتبعية للتطوير (dev):

composer require pestphp/pest --dev

بعد التثبيت، قم بتهيئة Pest في مشروعك:

./vendor/bin/pest --init

سينشئ هذا الأمر البنية الأساسية:

  • tests/ - دليل الاختبارات.
  • tests/Pest.php - ملف الإعدادات العامة (مثل uses()).
  • phpunit.xml - ملف الإعدادات (يعمل Pest فوق PHPUnit).

يمكنك الآن تشغيل الاختبارات:

./vendor/bin/pest

إذا كنت تستخدم Laravel، قم بتثبيت الحزمة الإضافية لتكامل أفضل:

composer require pestphp/pest-plugin-laravel --dev

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

أنشئ ملف tests/ExampleTest.php:

<?php

test('basic assertion', function () {
    $result = 1 + 1;
    expect($result)->toBe(2);
});

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

./vendor/bin/pest

سترى مخرجات خضراء مع رسالة PASS Tests\ExampleTest. لاحظ: لم نستخدم فئات، أو دوال مع تعليقات توضيحية، أو وراثة. مجرد دالة test() و closure. هذا هو "الاختبار الحديث".

صياغة بديلة باستخدام الكلمة المفتاحية it (أكثر قابلية للقراءة لوصف السلوك):

it('performs basic addition', function () {
    $sum = 2 + 3;
    expect($sum)->toEqual(5);
});

الدوال والطرق الأساسية في Pest

فيما يلي 10 دوال وطرق أساسية في Pest مع شرح مفصل وأمثلة.

1. test() - تعريف اختبار

الوظيفة: إنشاء اختبار جديد. هذه هي الدالة الرئيسية لتعريف سيناريو اختبار.

المعاملات:

  • string $description - وصف الاختبار (يظهر في وحدة التحكم).
  • callable $closure - closure يحتوي على منطق الاختبار.

توصيات