Я использую phpunit. Я хочу проверить свой код, который в основном получает параметры из HTTP-заголовков и использует его для выполнения последующих операций.
Но при тестировании заголовки имеют значение null.
Есть ли способ установить заголовки (может быть в файле начальной загрузки), чтобы когда мой код обращался к параметру, он получил это значение?
ОБНОВЛЕНИЕ: я попытался под кодом, предложенным в этом вопросе :
class Action_UserTest extends PHPUnit_Framework_TestCase { /** * @runInSeparateProcess */ public function testBar() { header('Location : foo'); } /** * @covers Action_User::executePut * @todo Implement testExecutePut(). */ public function testExecutePut() { ob_start(); $this->testBar(); $headers_list = headers_list(); $this->assertNotEmpty($headers_list); $this->assertContains('Location: foo', $headers_list); header_remove(); ob_clean(); } }
Но дает ошибку:
Action_UserTest::testExecutePut() Cannot modify header information - headers already sent by (output started at /usr/lib/php/PHPUnit/Util/Printer.php:172)
Вы не можете поймать заголовки, используя PHPUnit 3, если вы используете testdox или что-то в этом роде. Я забыл, какой из них, но один из разработчиков формы был прослушиван, когда я в последний раз заглядывал в него.
Кроме того, вам нужно создать bootstrap.php, и в нем все, что ему действительно нужно, это ob_start();
,
Затем phpunit -b bootstrap.php UnitTest.php
. Посмотрите, работает ли это.
Если нет, если вы назначаете щедрость этого вопроса, я рассмотрю его гораздо глубже.