首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.env.testing文件无法工作

.env.testing文件无法工作
EN

Stack Overflow用户
提问于 2019-06-14 21:51:58
回答 9查看 20.3K关注 0票数 27

我用我的凭据创建了一个.env.testing文件,除了数据库的不同表名之外,所有内容都与.env相同。

我尝试了php artisan config:clear,它删除了bootstrap/cache/config.php中的缓存配置文件,它破坏了数据库连接。如果我通过运行php artisan config:cache重新缓存该文件,则缓存的文件将返回,但没有.env.testing文件中的凭据。当我重新运行PHPUnit时,它连接到错误的DB,即存储在.env而不是.env.testing中的DB名称。

这是真的吗?最新的Laravel版本是否破坏了测试环境?

下面是文档所读的内容:(在这里找到:https://laravel.com/docs/5.8/testing)

“您可以根据需要定义其他测试环境配置值。测试环境变量可以在phpunit.xml文件中配置,但请确保在运行测试之前使用config:clear命令清除配置缓存!

此外,您还可以在项目的根目录中创建一个.env.testing文件。当运行.env测试或使用--env=test选项执行Artisan命令时,该文件将覆盖PHPUnit文件。

更新

我终于能够通过在.env文件中添加数据库覆盖来覆盖phpunit.xml中声明的数据库;.env.testing仍然无法工作。医生们至少有误导性。

EN

回答 9

Stack Overflow用户

发布于 2019-07-04 18:06:10

我对LaravelV5.6也有同样的问题。我设置了一个具有不同用户名、密码和数据库的.env.testing文件,但是我的测试总是在主.env数据库中运行。

在运行config缓存命令时,似乎需要指定测试环境。运行此命令后,它按照文档中的描述工作:

代码语言:javascript
复制
php artisan config:cache --env=testing
票数 47
EN

Stack Overflow用户

发布于 2020-04-28 22:20:54

这就是对我有用的东西:

phpunit.xml中,我不得不在<php>块中定义<env name="APP_ENV" value="testing"/>,以使PhpUnit加载.env.testing而不是.env

看起来,Laravel是错误的,而且.env.testing在Laravel或PhpUnit中的任何地方都不是硬编码的,它读取phpunit.xml中指定的任何APP_ENV的环境文件。您甚至可以将它重命名为.env.phpunit或其他任何东西,如果您以这种格式在phpunit.xml中定义它:<env name="APP_ENV" value="phpunit"/>

票数 11
EN

Stack Overflow用户

发布于 2020-08-31 11:12:52

我和Laravel v7也有同样的问题。我把手放在头发上已经有一段时间了,但我找到了一个解决办法。

.env.testing对我来说是个失败的理由。我从来没有加载过它,所以我只将所有的变量放在phpunit.xml中。要使测试环境(php artisan test)实际加载这些变量,我必须这样做:

首先,我必须将APP_ENV在phpunit.xml中设置为force="true"

代码语言:javascript
复制
<php>
    <server name="APP_ENV" value="testing" force="true"/>
    <server name="BCRYPT_ROUNDS" value="4"/>
    <server name="CACHE_DRIVER" value="array"/>
    <server name="DB_CONNECTION" value="sqlite"/>
    <server name="DB_DATABASE" value=":memory:"/>
    <server name="MAIL_MAILER" value="array"/>
    <server name="QUEUE_CONNECTION" value="sync"/>
    <server name="SESSION_DRIVER" value="array"/>
    <server name="TELESCOPE_ENABLED" value="false"/>
</php>

然后我不得不运行php artisan config:clear,而不是:cache。当我运行php artisan config:cache时,它实际上无法工作。可能是因为它缓存了env一次,并且从不根据不同的环境加载新的设置。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56605551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档