我使用phpunit开发了一组测试用例,用于测试开发站点和生产站点.唯一的区别是域名.如何将域从命令行传递到phpunit测试用例,以便我不需要修改每个文件?
edo*_*ian 12
在你的phpunit-bootstrap.php你可以做这样的事情:
$site = getenv('DOMAIN');
Run Code Online (Sandbox Code Playgroud)
并使用
<php>
<env name="DOMAIN" value="http://production.com"/>
</php>
Run Code Online (Sandbox Code Playgroud)
在您的phpunit.xml文件中,如文档中所示.
这种方法的缺点是你需要有两个不同的xml文件.
其他选项是使用围绕phpunit的自定义包装脚本,如@DavidHarkness所示,这往往效果不错
或者,如果您不想以自动方式运行这些测试(或使用两种方法)来执行以下操作:
$site = getenv('DOMAIN');
if(!$site) {
echo "Enter Domain: ";
$site = fgets(STDIN);
}
Run Code Online (Sandbox Code Playgroud)
并让跑步者检查环境,如果没有,请问你的域名.
几乎所有PHP都可以从外部世界输入的方式.
<php>
<define name="DOMAIN" value="http://production.com"/>
</php>
Run Code Online (Sandbox Code Playgroud)
例如,如果您正在使用常量,也可以使用它.
您可以在运行测试之前设置环境变量。为了让您自己更轻松,请创建一个简单的脚本来导出变量并运行测试。
#!/bin/bash
USAGE="Usage: $0 <domain> [file-or-directory]"
if [ "$#" == "0" ]; then
echo "$USAGE"
exit 1
fi
export TEST_DOMAIN=$1
shift
phpunit $*
Run Code Online (Sandbox Code Playgroud)
在您的基本测试用例中,您可以使用以下方法访问该值getenv:
$domain = getenv('TEST_DOMAIN');
Run Code Online (Sandbox Code Playgroud)