如何在phpunit测试中强制将环境变量设置为某个值?

k0p*_*kus 10 php phpunit environment-variables

在我的phpunit中我有这个配置:

<php>
    <env name="ENVIRONMENT" value="test"/>
</php>
Run Code Online (Sandbox Code Playgroud)

我在错误的假设下工作,它总是将环境变量设置为值test.然而,当系统已经具有变量集时,则它更喜欢已存在的值.

$ export ENVIRONMENT=GNARF
$ phpunit -c test/phpunit.xml
Run Code Online (Sandbox Code Playgroud)

所以在测试中,即使我预期,它的价值env('ENVIRONMENT')也会"GNARF"如此"test".

有没有办法让phpunit将env设置视为默认值而不是它应该使用的确定值?

我也想避免以某种方式调用phpunit来获得正确的env变量.

所以虽然这有效:

ENVIRONMENT="test";./vendor/bin/phpunit -c tests/phpunit.xml
Run Code Online (Sandbox Code Playgroud)

phpunit.xml如果可能的话,我宁愿在文件中配置它.

Fra*_*ula 9

这种方式对我有用(用PHPUnit 6.5测试):

<phpunit bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="MyProject">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
    <php>
        <env name="API_KEY" value="fakeApiKey" force="true" />
    </php>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

这是拉取请求,他们添加了这个新功能(如果你感兴趣的话).

sebastianbergmann于2017年7月4日将其添加到PHPUnit 6.3里程碑中