Frage

Ich teste einige Erweiterungen von Zend_Controller_Action in SimpleTest.Ich möchte in der Lage sein, mithilfe der Set-Methoden des Redirector-Aktionshilfsprogramms eine Umleitungs-URL festzulegen und dann die Methode „redirectAndExit()“ von Redirector zu verwenden, um später im Prozess tatsächlich umzuleiten.Dieser Prozess scheint nicht so zu funktionieren, wie ich es nach dem Lesen der Dokumentation und dem Betrachten des Codes in den Klassen Action Controller, Redirector und Response erwartet hatte.

Hier ist eine UnitTestCase-Methode, die ich geschrieben habe:

  public function testSetGoToUrl() {

    $request    = new Zend_Controller_Request_Http();
    $response   = new Zend_Controller_Response_Http();
    $controller = new App_Zend_Controller_Action($request, $response, array());

    $controller->getHelper('redirector')->setGoToUrl('/');

  }

Die App_Zend_Controller_Action-Klasse ist lediglich eine konkrete Erweiterung der abstrakten Klasse Zend_Controller_Action.Alles, was ich hier mache, ist, den Controller zu instanziieren und die Umleitungs-URL festzulegen.Der SimpleTest-Reporter sendet erwartungsgemäß zuerst die Header.Aber diese Testmethode erzeugt eine Ausnahme „Header gesendet“, und ich verstehe nicht, warum.Mir ist nicht bekannt, dass in dieser Situation irgendwelche run()- oder Dispatch()-Methoden aufgerufen werden.

Was sendet der zweite Satz Header?

War es hilfreich?

Lösung

Beim Testen sollten Sie verwenden Zend_Controller_Response_HttpTestCase Und Zend_Controller_Request_HttpTestCase.
Zend_Controller_Response_HttpTestCase::sendHeaders() Gibt ein Array aller Header zurück, die gesendet werden würden, anstatt real auszuführen header() Aussagen.

Diese werden auch in verwendet Zend_Test_PHPUnit_ControllerTestCase.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top