Nasıl Zend Framework ile PHPUnit kullanabilirim?

5 Cevap php

Ben Zend_Test ve PHP ile genel PHPUnit testleri yazmak için nasıl bilmek istiyorum.

5 Cevap

Ben tamamen tüm denetleyicileri test Zend_Test kullanıyorum. Yalnızca (önyükleme dosyasının kendisini ön denetleyicisi sevk etmemelidir!) Sizin önyükleme dosyasını kurmak zorunda gibi, kurmak oldukça basit. Benim baz test case sınıf bu gibi görünüyor:

abstract class Controller_TestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
    protected function setUp()
    {
        $this->bootstrap=array($this, 'appBootstrap');
        Zend_Auth::getInstance()->setStorage(new Zend_Auth_Storage_NonPersistent());
        parent::setUp();
    }

    protected function tearDown()
    {
        Zend_Auth::getInstance()->clearIdentity();
    }

    protected function appBootstrap()
    {
        Application::setup();
    }
}

Application::setup(); tüm kurulum kadar görevleri de gerçek bir uygulama kurmak gelmez hangi nerede. Basit bir test bu gibi görünecektir:

class Controller_IndexControllerTest extends Controller_TestCase
{
    public function testShowist()
    {
        $this->dispatch('/');
        $this->assertController('index');
        $this->assertAction('list');
        $this->assertQueryContentContains('ul li a', 'Test String');
    }
}

Hepsi bu ...

Onlar phpunit kapsayan Zend Geliştirici Bölgesi, bir "Introduction to the Art of Unit Testing" var.

ZF 1.10 kullanarak, test / bootstrap.php bazı önyükleme kodu koymak (temelde ne (kamu / index.php) ise, $ uygulama> bootstrap kadar ().

Sonra kullanarak bir test çalıştırmak mümkün duyuyorum

phpunit --bootstrap ../bootstrap.php  PersonControllerTest.php 

Ben Zend_Test kullanılmış değil ama Zend_MVC ve benzeri kullanarak uygulamalar karşı testler yazdım. Büyük bölümü test kurulumu içinde önyükleme kod yeterli oluyor.

Bir veritabanı işlemi kullanarak eğer artı o bir birim test, aksi takdirde veritabanı tüm berbat olur ile bitmiş olur tüm işlem silmek için iyi olacaktır.

böylece kurmak

public function setUp() {



    YOUR_ZEND_DB_INSTANCE::getInstance()->setUnitTestMode(true);



    YOUR_ZEND_DB_INSTANCE::getInstance()->query("BEGIN");

    YOUR_ZEND_DB_INSTANCE::getInstance()->getCache()->clear();

    // Manually Start a Doctrine Transaction so we can roll it back
    Doctrine_Manager::connection()->beginTransaction();
}

ve devrelerde üzerinde yapmanız gereken tüm rollback olduğunu

public function tearDown() {



    // Rollback Doctrine Transactions
    while (Doctrine_Manager::connection()->getTransactionLevel() > 0) {
        Doctrine_Manager::connection()->rollback();
    }

    Doctrine_Manager::connection()->clear();



    YOUR_ZEND_DB_INSTANCE::getInstance()->query("ROLLBACK");
    while (YOUR_ZEND_DB_INSTANCE::getInstance()->getTransactionDepth() > 0) {
        YOUR_ZEND_DB_INSTANCE::getInstance()->rollback();
    }
    YOUR_ZEND_DB_INSTANCE::getInstance()->setUnitTestMode(false);

}

Yani onun bu zor değil dostum

Keep Smiling Kdecom