Usando os métodos set redirectUrl no auxiliar de ação do Zend Redirector
-
28-09-2020 - |
Pergunta
Estou testando algumas extensões de Zend_Controller_Action no SimpleTest.Quero ser capaz de definir um URL de redirecionamento usando os métodos set do auxiliar de ação do Redirector e, em seguida, usar o método redirectAndExit() do Redirector para realmente redirecionar posteriormente no processo.Este processo não parece estar funcionando como eu esperava ao ler a documentação e observar o código no controlador de ação, redirecionador e classes de resposta.
Aqui está um método UnitTestCase que escrevi:
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('/');
}
A classe App_Zend_Controller_Action é meramente uma extensão concreta da classe abstrata Zend_Controller_Action.Tudo o que estou fazendo aqui é instanciar o controlador e definir o URL de redirecionamento.O repórter SimpleTest envia os cabeçalhos primeiro, conforme esperado.Mas esse método de teste gera uma exceção de "cabeçalhos enviados" e não entendo o porquê.Não tenho conhecimento de nenhum método run() ou dispatch() sendo chamado nesta situação.
O que está enviando o segundo conjunto de cabeçalhos?
Solução
Durante o teste, você deve usar Zend_Controller_Response_HttpTestCase
e Zend_Controller_Request_HttpTestCase
.
Zend_Controller_Response_HttpTestCase::sendHeaders()
retorna uma matriz de todos os cabeçalhos que seriam enviados em vez de executar o real header()
declarações.
Estes também são usados em Zend_Test_PHPUnit_ControllerTestCase
.