在我的phpunit中,我有这样的配置:
<php>
<env name="ENVIRONMENT" value="test"/>
</php>
我在错误的假设下工作,即它总是将环境变量设置为值test
,然而当系统已经设置了变量时,它会首选已经存在的值。
$ export ENVIRONMENT=GNARF
$ phpunit -c test/phpunit.xml
所以在测试中,env('ENVIRONMENT')
的值将是"GNARF"
,即使我期望"test"
。
有没有办法让phpunit不把env
设置当作默认值,而是当作它应该使用的确定值?
我还希望避免以某种方式调用phpunit来获取正确的env变量。
因此,在此过程中:
ENVIRONMENT="test";./vendor/bin/phpunit -c tests/phpunit.xml
如果可能,我宁愿在phpunit.xml
文件中配置它。
4条答案
按热度按时间vlju58qv1#
这种方法对我很有效(用PHPUnit 6.5测试):
这是他们添加了这个新特性的pull request(如果你感兴趣的话)。
sebastianbergmann于2017年7月4日将其添加到PHPUnit 6.3里程碑中
holgip5t2#
环境变量在
PHPUnit_Util_Configuration::handlePHPConfiguration()
中设置,实际上,它看起来像这样:看起来,如果不先取消变量的设置,就没有办法绕过这个检查,而当你在做这个检查时,你也可以立即将它设置为所需的值。
fsi0uk1n3#
你可以从
bootstrap
文件中设置env
变量,也可以从phpunit.xml
文件中选择引导文件,这样你就会得到你想要的结果。kupeojn64#
这是我在Laravel\Lumen中创建代码的方法。我想测试代码在不同环境中的行为:
在Class::method()中,代码如下所示: