jelix/fakeserverconf

用各种PHP服务器配置填充 $_SERVER 数组,用于单元测试。

v1.0.0 2015-03-05 08:52 UTC

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