2010-07-23 5 views
0

Я тестирую некоторые расширения Zend_Controller_Action в SimpleTest. Я хочу иметь возможность задать URL-адрес перенаправления, используя установленные методы помощника действий Redirector, а затем использовать метод redirectAndExit() Redirector для фактического перенаправления позже в процессе. Этот процесс, похоже, не работает, как я ожидал, от чтения документации и просмотра кода в классах контроллера действий, перенаправления и ответа.Использование set redirectUrl методов в помощнике действий Zend 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 отправляет заголовки сначала, как и ожидалось. Но этот метод тестирования генерирует исключение, отправленное заголовками, и я не понимаю, почему. Я не знаю, какие вызовы запускаются() или dispatch() в этой ситуации.

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

ответ

0

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

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

+0

Это хорошая идея, и я только что понял, что происходит. Ничто не пытается отправить второй набор заголовков; исключение генерируется методом canSendHeaders() объекта ответа, который вызывается, когда перенаправление задается объектом ответа. Спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^