Если вы не можете использовать xdebug_get_headers в своей системе, другой подход - это смоделировать функцию заголовка.
Сейчас я использую следующее, что прекрасно работает.Допустим, у вас есть этот код ...
<?php
header('Content-type: text/plain; charset=UTF-8');
...
Я заменяю header
функцией заголовка, которая может быть проверена следующим образом ...
<?php
Testable::header('Content-type: text/plain; charset=UTF-8');
...
Класс Testable реализован какследующим образом.Обратите внимание, что функции просто должны начинаться с Testable::
.В противном случае они работают так же, как и обычные функции.
class Testable {
private static $headers=array();
static function header($header) {
if (defined('UNIT_TESTING')) {
self::$headers[]=$header;
} else {
header($header);
}
}
public static function reset() {
self::$headers=array();
}
public static function headers_list() {
if (defined('UNIT_TESTING')) {
return self::$headers;
} else {
return headers_list();
}
}
}
Теперь все, что вам нужно сделать, это определить UNIT_TESTING
в ваших тестах, но не в работе.Затем, когда вы приступите к тестированию ваших заголовков, просто вызовите Testable::headers_list()
.
Конечно, вы должны добавить методы для setcookie, headers_sent и любых других функций, которые выдают заголовки HTTP.