Usando los métodos set de redirigirUrl en el asistente de acción Zend Redirector
-
28-09-2020 - |
Pregunta
Estoy probando algunas extensiones de Zend_Controller_Action en SimpleTest.Quiero poder configurar una URL de redireccionamiento usando los métodos establecidos del asistente de acción del Redirector y luego usar el método de redirecciónAndExit() del Redirector para redirigir más adelante en el proceso.Este proceso no parece estar funcionando como esperaba al leer la documentación y observar el código en el controlador de acción, el redirector y las clases de respuesta.
Aquí hay un método UnitTestCase que escribí:
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('/');
}
La clase App_Zend_Controller_Action es simplemente una extensión concreta de la clase abstracta Zend_Controller_Action.Todo lo que estoy haciendo aquí es crear una instancia del controlador y configurar la URL de redirección.El reportero de SimpleTest envía los encabezados primero, como se esperaba.Pero este método de prueba genera una excepción de "encabezados enviados" y no entiendo por qué.No tengo conocimiento de que se haya llamado a ningún método run() o despacho() en esta situación.
¿Qué envía el segundo conjunto de encabezados?
Solución
Mientras realiza la prueba, debe utilizar Zend_Controller_Response_HttpTestCase
y Zend_Controller_Request_HttpTestCase
.
Zend_Controller_Response_HttpTestCase::sendHeaders()
devuelve una matriz de todos los encabezados que se enviarían en lugar de ejecutar real header()
declaraciones.
Estos también se utilizan en Zend_Test_PHPUnit_ControllerTestCase
.