2009-08-26 2 views
6

Ich bin gewohnt, Einheitentests in Zend Framework 1.9 mit PHPUnit_Framework_TestCase für meine Anwendung zu schreiben.Wie man Zend_Test_PHPUnit_ControllerTestCase mit Zend_Application bootstrappt?

Jetzt versuche ich einen Komponententest basierend auf Zend_Test_PHPUnit_ControllerTestCase mit dem Bootstrapping von Zend_Application von Zend Framework zu schreiben. Aber ich kann es nicht laufen.

Hier ist meine arbeitsfreie Beispiel:

class FamilyControllerTest extends Zend_Test_PHPUnit_ControllerTestCase 
{ 

    public $application; 

    public function setUp() 
    { 
     $this->bootstrap = array($this, 'appBootstrap'); 
     parent::setUp(); 
    } 

    public function appBootstrap() 
    { 
     $this->application = new Zend_Application(
      APPLICATION_ENV, 
      APPLICATION_PATH . '/configs/application.ini' 
     ); 
     $this->application->bootstrap(); 
    } 

    public function testFooOverviewAction() 
    { 
     $this->dispatch('/foo/overview'); 
     $this->assertQueryContentContains('div', 'Silvan'); 
    } 
} 

In der offiziellen Dokumentation gibt es nur Beispiele, die die Testumgebung Initialisierung Plugins Bootstrap wie es explained in the official manual ist.

Irgendwelche Ideen?

Antwort

2

Sie haben es fast schon, aber Sie müssen Ihr Bootstrap als Parameter Ihrer Front Controller Instanz in Ihrer Testsuite zuweisen - so wie Zend_Application automatisch, in einer normalen Umgebung. Fügen Sie in Ihrer setUp() die folgende Zeile hinzu:

$this->getFrontController()->setParam('bootstrap', $this->application->getBootstrap()); 
+0

Großartig. Erste Frage, die ich bei Stackoverflow gestellt habe. Ich habe die richtige Antwort in nur 4 Stunden bekommen. Danke vielmals! –