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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top