Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定将在php中发送的http状态_Php_Unit Testing_Phpunit - Fatal编程技术网

确定将在php中发送的http状态

确定将在php中发送的http状态,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,我正在尝试为管理我的应用程序头的类编写一个测试用例。它发送的头中有http状态头。我正在使用headers_list()查看如果我现在发送头,将发送哪些头。headers_list()的问题在于它不包含http状态头(尽管这似乎没有在php.net上记录)。因此,我无法找到一种方法来确定将发送什么http状态。即使我确实发送了标题(我尽量不发送,这样我就可以一次性测试一堆不同的东西),状态也不会显示在标题列表()中。有什么想法吗 另外,我意识到我可以通过请求页面和检查响应来实现这一点,但这使得测

我正在尝试为管理我的应用程序头的类编写一个测试用例。它发送的头中有http状态头。我正在使用headers_list()查看如果我现在发送头,将发送哪些头。headers_list()的问题在于它不包含http状态头(尽管这似乎没有在php.net上记录)。因此,我无法找到一种方法来确定将发送什么http状态。即使我确实发送了标题(我尽量不发送,这样我就可以一次性测试一堆不同的东西),状态也不会显示在标题列表()中。有什么想法吗

另外,我意识到我可以通过请求页面和检查响应来实现这一点,但这使得测试很难保持在单元级别,因此我试图避免它。

使用返回标题但不发送的方法,或者编写响应对象,例如

class HttpResponse 
{
    protected $_status = '200 OK';
    protected $_headers = array();
    protected $_body = null;

    public function setStatus($status)
    {
        $this->_status = $status;
    }

    public function getStatus()
    {
        return $this->_status;
    }

    public function addHeader($name, $value)
    {
        $this->_headers[$name] = $value;
        return $this;
    }

    public function getHeaders()
    {
        return $this->_headers;
    }    

    public function write($data)
    {
        $this->_body .= $data;
        return $this;
    }

    public function send()
    {
        header('HTTP/1.0 ' . $this->_status);
        foreach ($this->headers as $name => $value) {
            header("$name : $value");
        }
        echo $this->_body;
        $this->resetRequest();
    }

   public function resetRequest()
   {
        $this->_status  = '200 OK';
        $this->_headers = array();
        $this->_body    = null;
   }
}
因此,只要您不
send()
,就可以通过getter检查状态。您还可以添加一个
\uuu toString()
方法,该方法以字符串形式返回整个响应,并对其进行正则化,以查看它是否与您期望的一样