Nếu bạn có thể' t sử dụng xdebug_get_headers trên hệ thống của bạn, cách tiếp cận khác là giả lập chức năng tiêu đề.
Tôi đang sử dụng các tính năng sau đây, hoạt động tuyệt vời. Cho phép nói rằng bạn có mã này ...
<?php
header('Content-type: text/plain; charset=UTF-8');
...
tôi thay header
với một chức năng tiêu đề đó là kiểm chứng như thế này ...
<?php
Testable::header('Content-type: text/plain; charset=UTF-8');
...
Lớp Testable được thực hiện như sau. Lưu ý rằng các chức năng chỉ cần được thêm vào trước với Testable::
. Nếu không, chúng hoạt động giống như các chức năng thông thường.
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();
}
}
}
Bây giờ tất cả những gì bạn cần làm là xác định UNIT_TESTING
trong các thử nghiệm của mình, nhưng không phải trong quá trình sản xuất. Sau đó, khi bạn đến để kiểm tra tiêu đề của bạn, chỉ cần gọi Testable::headers_list()
.
Tất nhiên, bạn nên thêm các phương thức cho setcookie, headers_sent và bất kỳ chức năng nào khác phát hành tiêu đề HTTP.
Nguồn
2013-12-17 11:14:26
Bạn có chắc chắn rằng [câu trả lời này] (http://stackoverflow.com/a/190498/212940) không chính xác cho trường hợp của bạn không? – vascowhite