我已经声明了一个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”会给你吨相关的结果.. –