Wie kann ich PHPUnit mit Zend Framework verwenden?

stimmen
40

Ich würde gerne wissen, wie PHPUnit Tests mit Zend_Test und im Allgemeinen mit PHP zu schreiben.

Veröffentlicht am 15/09/2008 um 19:57
quelle vom benutzer
In anderen Sprachen...                            


6 antworten

stimmen
0

Ich habe nicht verwendet Zend_Test aber ich habe schriftliche Tests gegen Apps mit Zend_MVC und dergleichen. Der größte Teil ist immer genug von der Bootstrap-Code in Ihrem Test-Setup.

Beantwortet am 15/09/2008 um 20:33
quelle vom benutzer

stimmen
14

Ich verwende Zend_Test vollständig alle Controller zu testen. Es ist ganz einfach einzurichten, da Sie nur Ihre Bootstrap-Datei eingerichtet haben (die Bootstrap-Datei selbst den Front-Controller NICHT Versand soll!). Mein Basistestfall-Klasse sieht wie folgt aus:

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();
    }
}

wo Application::setup();macht die ganze Einrichtung auf Aufgaben , die auch die reale Anwendung einrichten. Ein einfacher Test dann würde wie folgt aussehen:

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

Das ist alles...

Beantwortet am 16/09/2008 um 08:31
quelle vom benutzer

stimmen
7

Sie haben eine „ Einführung in die Kunst der Unit Testing “ auf der Zend Developer Zone, die PHPUnit abdeckt.

Beantwortet am 08/10/2008 um 14:59
quelle vom benutzer

stimmen
2

Ich fand diesen Artikel sehr nützlich. Auch Zend_Test half Dokumentation viel. Mit Hilfe dieser beiden Ressourcen, schaffte ich es erfolgreich Unit - Tests in der Umsetzung Quickstart - Tutorial des Zend Framework und schreiben einige Tests für sie.

Beantwortet am 21/02/2009 um 12:24
quelle vom benutzer

stimmen
1

Mit ZF 1.10, habe ich einige Bootstrap-Code in Tests / bootstrap.php (im Grunde, was in (public / index.php ist), bis $ application-> Bootstrap ().

Dann bin ich in der Lage, einen Test laufen mit

phpunit --bootstrap ../bootstrap.php  PersonControllerTest.php 
Beantwortet am 08/03/2010 um 08:03
quelle vom benutzer

stimmen
0

Plus, wenn Sie eine Datenbank-Transaktion verwenden, dann wäre es am besten alle, die Transaktion zu löschen, die sonst über eine Unit-Test gemacht wird ist Ihre Datenbank alle durch wird.

so weiter einrichten

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();
}

und auf Teardown alle müssen Sie tun, ist Rollback

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);

}
Beantwortet am 19/04/2011 um 00:27
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more