php gönderilecek http durumunu belirlemek

1 Cevap php

Benim uygulama için başlıklarını yöneten bir sınıf için bir test durumu yazmak çalışıyorum. Gönderir başlıklarının arasında http durum başlıkları vardır. Ben başlıklar göndermek olacağını görmek için) (headers_list kullanıyorum, ben şimdi başlıkları göndermek edildi. (Bu php.net üzerine belgesiz gibi görünüyor olsa da) headers_list ile () sorun http durum başlığını dahil olmamasıdır. Yani, http durumu gönderilecek ne olacağını belirlemek için bir yol bulamıyorum. Ben başlıkları göndermek do (yapmak değil çalışıyorum, bu yüzden bir seferde tüm farklı şeylerin bir demet test edebilirsiniz) bile, durum) (headers_list içinde görünmüyor. Herhangi bir fikir?

P.S. Ben sayfasını talep ve tepkisini inceleyerek bu yapabileceğini fark, ama bu çok zor bir unit düzeyde testler tutmak için yapar, bu yüzden bunu önlemek için çalışıyorum.

1 Cevap

Başlığını verir ama örneğin, bir Response nesnesi göndermek ya da yazmaz bir Mock kullanmak ya

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;
   }
}

Yani sürece dont send() Eğer alıcılar aracılığıyla durumunu inceleyebiliriz. Ayrıca bir dize olarak tüm yanıt verir ve bunu bakmak beklemek gibi görünüyor olmadığını görmek için regex bir __toString() yöntemini ekleyebilirsiniz.