ما هو 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 يحتوي على منطق الاختبار.
أيضاً في المكتبة
توليد تقارير PDF بلغة C# (.NET): iTextSharp، QuestPDF، PDFsharp
دليل شامل لـ Mikro-ORM مع TypeScript: أمثلة وتثبيت
تحديد معدل الطلبات في Swift: إدارة تواتر الطلبات في iOS/macOS
ORM لـ C# (.NET): مقارنة Entity Framework و Dapper و NHibernate