如何在pest / phpunit和包开发中使用.env.testing文件?

xmjla07d  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(134)

我正在使用Spatie Package Skelton开发一个软件包。它是在引擎盖下使用害虫。我创建了一个.env.testing文件,并检查了使用dd(app()->environment));(即testing)运行有害程序测试时所使用的环境。
无论如何,当我在测试中使用env('TEST');并且在.env.testing文件中有TEST=test时,它是否返回null
我错过了什么?

py49o6xq

py49o6xq1#

我看不出有任何理由在你的包中使用.env文件。我用PHPUnit创建了多个Laravel包和php SDK,它从来不需要.env文件。
如果你完全致力于使用害虫,我的回答将是没有用的。
但是如果你想使用PHPUnit,那么你可以创建一个phpunit.xml.dist文件。它只是一个 backbone ,可以(git)版本化。(就像Laravel中的.env.example一样。
复制它并将其命名为phpunit.xml。不应对此文件进行版本控制。
默认情况下,PHPunit将查找此文件,或者回退到dist文件。
在此文件中,您可以为测试提供环境变量:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit>
    <other-setting-that-not-relevant-now />
    <php>
        <env name="MY_ENV_KEY" value="my_env_value" />
    </php>
</phpunit>
  • 此示例代码可能已过期。*

你也不应该在你的包中使用env(),因为Laravel可以缓存配置。如果有配置缓存文件,则env()将始终返回null
注册你自己的配置文件,你可以在这里使用env(),并将其合并到你的提供程序中。
这样你就可以使用config()函数,但是如果你在你的提供者中收集配置,然后将它传递给你的服务类,这是更好的解决方案。

相关问题