我使用 phpunit 开发了一组测试用例,用于测试开发站点和生产站点。唯一的区别是域名。如何将域从命令行传递到 phpunit 测试用例,这样我就不需要修改每个文件?
最佳答案
在您的 phpunit-bootstrap.php
中,您可以执行如下操作:
$site = getenv('DOMAIN');
和使用
<php>
<env name="DOMAIN" value="http://production.com"/>
</php>
在你的 phpunit.xml
文件中 as shown in the documentation .
这种方法的缺点是您需要有两个不同的 xml
文件。
其他选项是使用围绕 phpunit 的自定义包装器脚本,如@DavidHarkness 展示的那样效果很好
或者,如果您不想以自动化方式(或同时使用这两种方法)运行这些测试,可以执行以下操作:
$site = getenv('DOMAIN');
if(!$site) {
echo "Enter Domain: ";
$site = fgets(STDIN);
}
然后让运行者检查环境,如果没有任何东西,请您提供域名。
封装或定义或其他任何东西
php 从外部世界接收输入的几乎所有方式都是如此。
<php>
<define name="DOMAIN" value="http://production.com"/>
</php>
例如,在您无论如何都使用常量的情况下也适用。
关于php - 将变量传递给 PhpUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491437/