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

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

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

ابدأ الدورة

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

1. ما هو Behat ولماذا تحتاجه؟

Behat هو إطار عمل PHP قوي لتطوير البرمجيات القائم على السلوك (Behaviour-Driven Development - BDD). يتيح لك وصف سلوك التطبيق بلغة طبيعية شبه بشرية (Gherkin)، ثم التحقق تلقائيًا من أن الكود يطابق هذا الوصف. يعمل Behat كجسر بين أعضاء الفريق غير التقنيين (المدراء، المحللين، العملاء) والمطورين، حيث يوفر وثيقة "حية" موحدة تكون في نفس الوقت مواصفات ومجموعة اختبارات.

لماذا تحتاج Behat؟ في المقام الأول، لتحسين التواصل وتقليل مخاطر سوء فهم المتطلبات. بدلاً من كتابة اختبارات وحدة تقنية تتحقق من كيفية عمل الدالة، تكتب سيناريوهات تصف ماذا يجب أن يفعل النظام من وجهة نظر المستخدم. على سبيل المثال، بدلاً من "testLogin()" تكتب "يقوم المستخدم بإدخال بيانات صحيحة ويضغط على 'تسجيل الدخول'". هذا يجعل الاختبارات قابلة للقراءة لجميع المشاركين في العملية. بالإضافة إلى ذلك، يعتبر Behat مثاليًا لاختبارات التكامل واختبارات E2E (end-to-end) لتطبيقات الويب وواجهات API وأوامر الكونسول.

يتكامل Behat بشكل وثيق مع Mink - وهي مكتبة لمحاكاة المتصفح، مما يسمح باختبار واجهات الويب. ومع ذلك، يمكن استخدامه أيضًا لاختبار كود PHP الخالص بدون سياق ويب. الفكرة الأساسية لـ BDD المطبقة في Behat هي: "اكتب السيناريو أولاً، ثم اكتب الكود الذي يجعل السيناريو ناجحًا".

2. التثبيت

يتم تثبيت Behat عبر Composer - مدير الحزم القياسي لـ PHP. للقيام بذلك، قم بتنفيذ الأمر التالي في الطرفية (Terminal) في جذر مشروعك:

composer require --dev behat/behat

سيقوم هذا الأمر بتثبيت Behat وجميع تبعياته في مجلد vendor/ وإضافة إدخال في ملف composer.json.

إذا كنت تخطط لاختبار تطبيقات الويب، فستحتاج أيضًا إلى Mink وأحد مشغلاته (مثل Goutte للعمل السريع بدون JavaScript أو Selenium2 للعمل مع متصفح حقيقي):

composer require --dev behat/mink-extension behat/mink-goutte-driver behat/mink-selenium2-driver

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

vendor/bin/behat --init

سينشئ هذا الأمر هيكل المجلدات: features/ (ملفات .feature) و features/bootstrap/ (ملف كلاس السياق FeatureContext.php).

3. البداية السريعة - مثال عملي بسيط

قم بإنشاء ملف features/hello.feature:

Feature: Hello World
  In order to see how Behat works
  As a developer
  I need to be able to run a simple test

  Scenario: Say hello to the user
    Given I have a greeting program
    When I run it with name "World"
    Then I should see "Hello, World!"

الآن قم بتعديل ملف features/bootstrap/FeatureContext.php:

greeting = function($name) {
            return "Hello, " . $name . "!";
        };
    }

    /**
     * @When I run it with name :name
     */
    public function iRunItWithName($name)
    {
        $this->output = call_user_func($this->greeting, $name);
    }
}

توصيات