Benim PHP denetleyici sınıf test etmek php test dosyaları yazma yardıma ihtiyacım var

1 Cevap php

benim önceki web sitesi geliştirme, ardından web sitemizi development.and sitemizde görünecektir kuruluşlara gelen birkaç kontrolör classs yerleşik çok basittir: Müşterilerin seyahat için otobüs kitap için sadece bir alışveriş sitesi.

Şimdi yani, tek bir denetleyici sınıf için, ben düzgün çalışıp çalışmadığını test etmek için bir test case yazmak gerekir, yapılması gereken zorlu bir görevi duyuyorum.

Örneğin, bizim gibi, "JobsController" adında bir controller sınıfı vardır:

require_once 'php/controllers/Controller.php';

require_once 'php/models/Jobs.php';

class JobsController extends Controller
{
    function __construct()
    {
        parent::__construct();

        $this->models = array(  'jobs' => new Jobs() );
    }

    function __destruct()
    {
        parent::__destruct();
    }

    function addJob( $name , $desc )
    {
        if( $name == '' )
        {
            return false;
        };

        $params = array(    'name' => $name ,
                            'description' => $desc );

        return $this->models['jobs']->add( $params );
    }

    function modifyJob( $jid , $name , $desc )
    {
        if( $jid == '' || $name == '' )
        {
            return false;
        };

        $params = array(    'name' => $name , 
                            'description' => $desc );

        return $this->models['jobs']->modify( $jid , $params );
    }

    function removeJob( $jid )
    {
        if( $jid == '' )
        {
            return false;
        };

        return $this->models['jobs']->remove( $jid );
    }

    function getJob( $jid )
    {
        return $this->models['jobs']->getInfo( $jid );
    }

    function getAllJobs()
    {
        return $this->models['jobs']->getAll();
    }

}

>

ve diğer Denetleyici sınıf hepsi sadece isim değişiklikleri ile, hemen hemen aynıdır.

Şimdi gerçekten siz bu Controller Sınıfı kodunuzu okuyan properly.After çalışıp çalışmadığını test etmek için basit bir php dosyası yazmak için nasıl bana biraz yardıma ihtiyacım var, ben dinlenme denetleyicileri ile kendimi çalışmak için ellerimi alabilir.

Çok teşekkür ederiz!

1 Cevap

Test durumları yazarken temelde bir önce ve sonra senaryoyu test ediyoruz. Test çalıştırılır önce (every time) ne beklediğimi biliyorum sağlamak için temiz bir çevre başlatmak istiyorum. Sonraki size yöntemleri çalıştırmak ve ortamı daha sonra ne gibi test çektiğiniz eylem vardı istenen etkilemez olmadığını teyit edeceğiz.

Lütfen modifyJob yöntemi test etmek için, örneğin bir iş ortamı yaratmak istiyorsanız, test değerleri ile modifyJob yöntemini çağırın, ve sonra aynı iş GetJob arama ve dönüş değeri modifyJob geçirilen ne eşleşen değerlere sahip olmasını sağlamak:

function testModifyJob() {
  // create clean, known environment
  $controller = new JobsController();
  $job_id = $controller->addJob('name', 'description');

  // run the action
  $controller->modifyJob($job_id, 'new name', 'new description');

  //test the results
  $job = $controller->getJob($job_id);
  $result = $job['name'] == 'new name' && $job['description'] == 'new description';

  return $result;
}

Kontrolörünüzü test için, sınıf nesne sistemi içinde güvenilir olabilir emin olmak sağlayan yöntemlerin her biri için yukarıdaki gibi test durumları yazmak istiyorum gidiyoruz.

Test durumlarda yazarken büyük olasılıkla, sadece testler için denetleyici yeni yöntemler yaratmak devam edin ve bu (sizin atama izin veriyorsa) oluşturmak için bir ihtiyaç olacak. Bu kadar getirmek için test durumları için çok yaygındır ve genellikle hafif (nedenleri test odaklı geliştirme böyle güçlü bir takip var) bu nüansları getirerek sınıfların mevcut işlevselliği dışarı yuvarlak olur. Buna bir örnek, böyle deleteJob () gibi fonksiyonları test için izin işleri toplama, belirli bir işi varsa test edecek bir hasJob ($ job_id) yöntemi oluşturmak olacaktır.