اذهب إلى المحتوى
  • 0

كيف يمكن عمل testing بسيط ل ميثود في laravel

Osama Kha

السؤال

Recommended Posts

  • 0

يمكنك معاملة هاته الدالة كميزة. واختبارها كحالة استخدام عن طريق اختبارات الميزة في لارافيل.

لنقل ان الدالة الخاصة بك يتم الاشارة اليها عن طريق المسار:

Route::get('/example/{byear}' , [MyController::class ,'countAge'])

ستحتاج اول الأمر انشاء حالة اختبار Test case عن طريق تنفيذ:

php artisan make:test CountAgeTest

ستلاحظ انشاء ملف جديد بداخل مجلد tests/Feature الخاص بتطبيق لديك. محتوى الملف سيكون مشابها لـ:

<?php
 
namespace Tests\Feature;
 
use PHPUnit\Framework\TestCase;
 
class CountAgeTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function test_basic_test()
    {
        $this->assertTrue(true);
    }
}

في العادة يعبر الصنف CountAgeTest عن مجموع حالات الاستخدام التي تندرج تحت هذا الهدف وهو حساب العمر. فعلى سبيل المثال يتفرع عن هذا الهدف:

  • حالة ان يتم تقديم سنة اكبر من الحالية (2040 مثلا)، كيف نتوقع ان يتم التعامل معها؟
  • حالة ان يتم تقديم عدد سالب.
  • حالة ان يتم تقديم سلسلة نصية بدل عدد.
  • حالة ان يتم تقديم عدد عشري عوض عدد صحيح موجب.

كل هاته الحالات تسمى حالات استخدام تتبع عن الهدف الأساسي الذي هو حساب العمر. (قد يمثل Task او Goal في مخططات حالات الاستخدام ان كنت معتادا على العمل في فرق).

فأنت سنحتاج نمذجة هاته الحالات ومن بينها الحالة التي وصفتها. لنأخذ الخاصة بك كمثال:

  • في لارافيل يتم وصف حالات الاختبار كتوابع تبدأ اما ب test :
    <?php
     
    namespace Tests\Feature;
     
    use PHPUnit\Framework\TestCase;
     
    class CountAgeTest extends TestCase
    {
        /**
        *
        */
        public function test_if_age_can_be_counted()
        {
           //
        }
    }
    او مميزة بتعليق @test ويسمى annotation:
    <?php
     
    namespace Tests\Feature;
     
    use PHPUnit\Framework\TestCase;
     
    class CountAgeTest extends TestCase
    {
        /** @test*/
        public function age_can_be_counted()
        {
           //
        }
    }

     

بنية حالة الاختبار تتبع غالبا نمطا مشابها:

/** @test*/
public function age_can_be_counted()
{
   # 1 - تحضير البيانات


   # 2 - القيام بال action والخروج بنتيجة

   
   # 3 - استعمال التوكيدات assertions للتأكد من حصول شيء معين
}

مثال:

/** @test*/
public function age_can_be_counted()
{
   # 1 - تحضير البيانات
   $exampleByear = 1960;
   $ageNow = 62;

   # 2 - القيام بال action والخروج بنتيجة
   $response = $this->get('/example/'.$exampleByear);
   
   # 3 - استعمال التوكيدات assertions للتأكد من حصول شيء معين
   $response->assertStatus(200); // التأكد من ان كود حالة الطلب يعبر عن طلب ناجح

   $this->assertEquals(
       $response->getContent(),
       $ageNow
   )
}

لاحظ استعمال التوكيد assertStatus و assertEquals وهما تابعان يوفرهما لارافيل ضمن سلسلة من التوابع يمكن الاستفادة منها لاختبار نتائج مختلفة.

أخيرا، لن تحتاج الا طباعة الأمر:

php artisan test

أو:

vendor/bin/phpunit

أو:

phpunit

لتشغيل الاختبارات، خرج الأمر هو ما سيعبر عن اما نجاح او فشل حالة الاختبار.

مقدمة إلى التعامل مع الاختبارات في Laravel

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...