Я тестирую некоторые расширения 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() в этой ситуации.
Что посылает второй набор заголовков?
Это хорошая идея, и я только что понял, что происходит. Ничто не пытается отправить второй набор заголовков; исключение генерируется методом canSendHeaders() объекта ответа, который вызывается, когда перенаправление задается объектом ответа. Спасибо! –