jelix / fakeserverconf
用各种PHP服务器配置填充 $_SERVER 数组,用于单元测试。
v1.0.0
2015-03-05 08:52 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 4.3.*
This package is auto-updated.
Last update: 2024-08-29 03:52:44 UTC
README
这个PHP库允许您模拟不同的PHP服务器配置。
在CLI环境(例如,您运行PHPUnit时),您可能会在测试使用一些 $_SERVER 值的类时遇到一些困难。这个全局变量并不包含与在Apache环境(例如)中调用脚本相同的内容。此外,$_SERVER的内容在不同的服务器配置之间也不同,例如,配置了mod_php的服务器,以及作为CGI、FPM等运行PHP的服务器。
FakeServerConf允许您通过提供一个“虚拟”PHP服务器的URL来自动填充$_SERVER(以及$_GET、$_POST等)。
您不再需要设置多个真实的PHP HTTP服务器来在不同的环境中测试您的库。只需在单元测试中调用FakeServerConf即可。
例如,在您的测试中,您希望$_SERVER填充为如果请求了URL "http://testapp.local/info.php/foo/bar?baz=2"。在您的PHPUnit/Atoum/Simpletest/ whatever类中,调用此
// let's says we are running an Apache server configured with mod_php. // Indicate to this server the script name (it can be hidden in the http request) $server = new \Jelix\FakeServerConf\ApacheMod(null, '/info.php'); // now simulate an HTTP request $server->setHttpRequest('http://testapp.local/info.php/foo/bar?baz=2');
$_SERVER现在已正确填充,您可以测试您的类(路由器、URL解析器等)
您还可以设置文档根和其他一些设置...
支持的服务器
- Apache + mod_php
- Apache + php-cgi
- Apache + mod_fastcgi + php-fpm
添加服务器
在FakeServerConf中找不到您的服务器配置?帮助我们提供额外的支持。
- 首先配置您的服务器。最好是在虚拟机中全新安装。您应该为PHP安装curl扩展。
- 配置一个名为“testapp.local”的虚拟主机。它应该接受多视图查询(没有.php)
- 服务器的文档根应该是/var/www/,它应该包含在tests/www中可以找到的文件。您也可以将文档根设置为tests/www。
- 在您的浏览器中,调用http://testapp.local/generateserverdata.php。它生成一些PHP代码,您需要将其添加到tests/中的一个测试类中。查看现有的测试类。
- 在src/jelix/FakeServerConf中创建一个新的类,它继承自FakeServerConf
- 在您的测试类中,您应该实例化这个类
- 使用phpunit运行测试,并在您的新的类中修复测试中检测到的问题。
- 除非对所有服务器配置都有意义,否则不要修改FakeServerConf类。
安装
您可以使用Composer。在您的composer.json文件中添加
"require": {
"jelix/fakeserverconf": "1.0.0"
}
运行测试
安装phpunit(运行composer install)并在tests/目录中运行它
cd tests
../vendor/bin/phpunit
# or if you installed phpunit globally:
phpunit