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

كيف يمكن عمل unit test بسيط لكود PHP

Osama Kha

السؤال

<?php


include('database.php');

if (isset($_POST['upload']))
{
    $NAME=$_POST['name'];
    $Des=$_POST['description'];
    $PRICE=$_POST['price'];
    $IMAGE=$_FILES['image'];
    $image_location = $_FILES['image']['tmp_name'];
    $image_name     = $_FILES['image']['name'];
    $image_up       = "images/".$image_name;
    $insert = "INSERT INTO products (Name,	description,  price,  image) VALUES ('$NAME','$Des','$PRICE','$image_up')";
    mysqli_query($sql,$insert);
    if(move_uploaded_file($image_location,'images/'.$image_name))
    {
        echo "<script>alert('Product is uploded')</script>";
    }
    else
    {
        echo "<script>alert('Product is not uploded')</script>";
    }
    header('location: shop.php'); 
}
?>

 

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

 من الأفضل استخدام إطار الإختبار PHPUnit المتاح للغة PHP، وستجد شرح هنا في الموقع الرسمي بناءًا على إصدار PHP الذي تستخدمه:

مثلاً لإصدار PHP 8.1 واعلى سنقوم بتثبيت الإطار من خلال الأمر التالي:

composer require --dev phpunit/phpunit ^10

ثم قم بإنشاء مجلد للاختبارات في مجلد مشروعك، وتسميته tests مثلاً، ثم داخل مجلد الاختبارات، أنشئ ملفًا جديدًا للاختبار، ويجب أن يكون اسم الملف ينتهي بـ Test.php، وليكن اسم الملف مثلاً ProductUploaderTest.php.

ثم قم بتحديد الاعتمادات اللازمة في ملف الاختبار، بإضافة استيراد PHPUnit\Framework\TestCase واستيراد الكلاس الذي ترغب في اختباره، وفي حالتك، نحن نريد اختبار ProductUploader لذا يجب أن يكون الملف على النحو التالي:

<?php
// tests/ProductUploaderTest.php

use PHPUnit\Framework\TestCase;

// استيراد الكلاس الذي نرغب في اختباره
include('ProductUploader.php');

class ProductUploaderTest extends TestCase
{
    // هنا يمكنك إنشاء الاختبارات الخاصة بك
}

وعليك بإضافة دوال الاختبارات التي ترغب في إنشائها داخل الكلاس ProductUploaderTest، ويجب أن يبدأ اسم كل دالة اختبار بكلمة test، وليكن مثلاً إنشاء اختبار بسيط لدالة uploadProduct:

<?php
// tests/ProductUploaderTest.php

use PHPUnit\Framework\TestCase;

// استيراد الكلاس الذي نرغب في اختباره
include('ProductUploader.php');

class ProductUploaderTest extends TestCase
{
    // اختبار دالة uploadProduct
    public function testUploadProduct()
    {
        // الاستعداد للاختبار
        $dbMock = $this->createMock(mysqli::class);
        $dbMock->method('query')->willReturn(true);

        $uploader = new ProductUploader($dbMock);

        // القيام بالاختبار
        $result = $uploader->uploadProduct('Product Name', 'Product Description', 50, [
            'tmp_name' => '/path/to/temp/file',
            'name' => 'product.jpg'
        ]);

        // التحقق من النتائج المتوقعة
        $this->assertTrue($result);
    }
}

وفي النهاية تشغيل الاختبارات باستخدام PHPUnit من سطر الأوامر، وعليك بالتأكد من وجود في مسار مجلد المشروع الرئيسي:

./vendor/bin/phpunit tests

ولاحظ أن مجلد الإختبارات باسم tests.

وستجد هنا توضيح مفصل:

وأيضًا قد يفيدك على الإطلاع على Codeception بدلاً من PHPUnit:

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...