我已經聲明瞭一個HTTP_HOST,如下所示。PHPUnit錯誤「未定義的索引:HTTP_HOST」
public function testReadUser() {
$_SERVER['HTTP_HOST'] = "x.y";
.
.
.
}
儘管如此,phpunit給出了未定義的索引錯誤。爲什麼?
我已經聲明瞭一個HTTP_HOST,如下所示。PHPUnit錯誤「未定義的索引:HTTP_HOST」
public function testReadUser() {
$_SERVER['HTTP_HOST'] = "x.y";
.
.
.
}
儘管如此,phpunit給出了未定義的索引錯誤。爲什麼?
由於您正在通過命令行界面(CLI)運行測試,因此會出現此錯誤。由於沒有通過HTTP進入的請求,因此CLI無法獲取該信息。
但它是'$ _SERVER'變量。 – srain
我在同一個項目的另一個測試文件中以相同的方式使用相同的變量。我使用netbeans而不是命令行。 – Geek
從手冊中:'HTTP_HOST - 來自當前請求的主機:頭的內容,如果有的話.'。這意味着沒有這樣的標題。這是發送該頭部的瀏覽器。配置您的NetBeans以在運行測試時發送它。它是從實際的HTTP請求中讀取的片段信息,如果您的客戶端不提供這些信息,PHP將不會在$ _SERVER數組中創建所提到的索引。 – user2601913
在您的phpunit.xml
文件中,您可以設置服務器變量。添加php
元素phpunit
根目錄下:
<phpunit>
<php>
<server name='HTTP_HOST' value='http://localhost' />
</php>
</phpunit>
更多信息請參見the docs。
您可以在測試方法中聲明該值(由您測試的方法所需)。
例如:
function testMethod(){
$_SERVER['yourvar']='yourvalue';
...your code making the request via phpunit to the method you are testing
}
通過在您的測試方法聲明$ _ SERVER它會提供給你測試的方法。它適用於$ _POST和$ _GET,如果您需要這些值這些值。
你能發佈你得到的每一個錯誤嗎? –
「未定義的索引:HTTP_HOST」這是唯一的錯誤語句。我使用了bootstrap.php文件並添加了行$ _SERVER ['HTTP_HOST'] ='myHost';'。這解決了這個問題。我對bootstrap.php文件瞭解不多。你能告訴我什麼是這個文件的使用,我可以通過這個文件傳遞參數獲取和發佈測試文件? – Geek
我可以告訴你,但谷歌搜索「phpunit bootstrap」會給你噸相關的結果.. –