Использование методов set redirectUrl в Zend Redirector action helper

StackOverflow https://stackoverflow.com/questions/3321036

  •  28-09-2020
  •  | 
  •  

Вопрос

Я занимаюсь модульным тестированием некоторых расширений Zend_Controller_Action в SimpleTest.Я хочу иметь возможность установить URL-адрес перенаправления, используя установленные методы помощника по действию Redirector, а затем использовать метод redirectAndExit() Redirector для фактического перенаправления позже в процессе.Похоже, этот процесс работает не так, как я ожидал, прочитав документацию и просмотрев код в классах action controller, redirector и response.

Вот метод UnitTestCase, который я написал:

  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('/');

  }

Класс App_Zend_Controller_Action является просто конкретным расширением абстрактного класса Zend_Controller_Action.Все, что я здесь делаю, - это создаю экземпляр контроллера и устанавливаю URL-адрес перенаправления.Самый простой репортер сначала отправляет заголовки, как и ожидалось.Но этот тестовый метод генерирует исключение "отправленные заголовки", и я не понимаю почему.Я не знаю о каких-либо методах run() или dispatch(), вызываемых в этой ситуации.

Что отправляет второй набор заголовков?

Это было полезно?

Решение

Во время тестирования вы должны использовать Zend_Controller_Response_HttpTestCase и Zend_Controller_Request_HttpTestCase.
Zend_Controller_Response_HttpTestCase::sendHeaders() возвращает массив всех заголовков, которые были бы отправлены вместо выполнения real header() заявления.

Они также используются в Zend_Test_PHPUnit_ControllerTestCase.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top