我正在使用Spatie Package Skelton开发一个软件包。它是在引擎盖下使用害虫。我创建了一个.env.testing
文件,并检查了使用dd(app()->environment));
(即testing
)运行有害程序测试时所使用的环境。
无论如何,当我在测试中使用env('TEST');
并且在.env.testing
文件中有TEST=test
时,它是否返回null
。
我错过了什么?
我正在使用Spatie Package Skelton开发一个软件包。它是在引擎盖下使用害虫。我创建了一个.env.testing
文件,并检查了使用dd(app()->environment));
(即testing
)运行有害程序测试时所使用的环境。
无论如何,当我在测试中使用env('TEST');
并且在.env.testing
文件中有TEST=test
时,它是否返回null
。
我错过了什么?
1条答案
按热度按时间py49o6xq1#
我看不出有任何理由在你的包中使用
.env
文件。我用PHPUnit创建了多个Laravel包和php SDK,它从来不需要.env
文件。如果你完全致力于使用害虫,我的回答将是没有用的。
但是如果你想使用PHPUnit,那么你可以创建一个
phpunit.xml.dist
文件。它只是一个 backbone ,可以(git)版本化。(就像Laravel中的.env.example
一样。复制它并将其命名为
phpunit.xml
。不应对此文件进行版本控制。默认情况下,PHPunit将查找此文件,或者回退到dist文件。
在此文件中,您可以为测试提供环境变量:
你也不应该在你的包中使用
env()
,因为Laravel可以缓存配置。如果有配置缓存文件,则env()
将始终返回null
。注册你自己的配置文件,你可以在这里使用
env()
,并将其合并到你的提供程序中。这样你就可以使用
config()
函数,但是如果你在你的提供者中收集配置,然后将它传递给你的服务类,这是更好的解决方案。