Использование методов set redirectUrl в помощнике действий Zend Redirector - PullRequest
0 голосов
/ 23 июля 2010

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

Вот метод 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 перенаправления. Репортер SimpleTest сначала отправляет заголовки, как и ожидалось. Но этот метод теста генерирует исключение «отправленные заголовки», и я не понимаю, почему. Мне неизвестно о каких-либо методах run () или dispatch (), вызываемых в этой ситуации.

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

1 Ответ

0 голосов
/ 26 июля 2010

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

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

...