Использование методов set redirectUrl в Zend Redirector action helper
-
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
.