如何在phpunit中覆盖导出的变量?

时间:2017-04-29 20:57:17

标签: php phpunit

我知道我可以在我的phpunit.xml

set an environment variable
<php>
    <env name="MY_VARIABLE" value="foo" />
</php>

所以这很好用

phpunit
// foo

但是,如果已在父shell中导出变量,则忽略该值。

export MY_VARIABLE=bar
phpunit
// bar

我需要为其他子进程导出此值,但我真的不想只是为了运行测试而打开另一个shell。如何配置phpunit以仅使用为测试环境定义的值?

1 个答案:

答案 0 :(得分:2)

默认情况下,phpunit.xml中定义的环境变量会被shell环境覆盖。此行为与环境变量在命令行工具中通常使用的方式一致。设置一个环境变量,我们通常希望它被传递给工具并被用来代替配置的值。

新的force属性是在 PHPUnit 6.3 中引入的,让我们为所选变量禁用此行为:

<env name="FOO" value="bar" force="true" />

相关的github问题: