【问题标题】:Codeception/Symfony4 Environment variable not found: "DATABASE_URL"找不到 Codeception/Symfony4 环境变量:“DATABASE_URL”
【发布时间】:2019-08-29 14:52:14
【问题描述】:

我在 Symfony4 中有一个带有教义 DB 的项目,一切顺利。

我想用 Codeception 添加一些功能和单元测试。我按照文档并将其添加到我的 functional.suite.yml

actor: FunctionalTester
modules:
    enabled:
        - Symfony:
            app_path: 'src'
            environment: 'test'
        - Doctrine2:
            depends: Symfony
#            cleanup: true
        - \Helper\Functional
#       - Db
    step_decorators: ~        

但是,当运行 vendor/bin/codecept 运行时,我得到了一个丑陋的:

在 EnvVarProcessor.php 第 131 行:

未找到环境变量:“DATABASE_URL”。

我在文档中看不到任何其他相关内容,因此不确定我遗漏了什么。

【问题讨论】:

  • 我想知道 bin/console about --env=test--env=dev 相比显示了什么

标签: symfony doctrine-orm doctrine symfony4 codeception


【解决方案1】:

很遗憾,我无法解释它背后的机制,但为了解决它,我必须将 DATABASE_URL 环境变量添加到我的操作系统中。

export DATABASE_URL='mysql: ...';

这对我来说似乎很奇怪(同样,我不知道为什么 Codeception 需要这个),所以我一直在挖掘。我后来发现的东西,但似乎实际上导致整个情况是我如何安装 Codeception。如果你去codeception docs你可以阅读:

如果您不打算进行验收测试,您可以通过要求 codeception/base 来获得 Codeception 的最小安装

编辑 2020 年 7 月:有关最小安装的信息已从链接的网站中删除,看起来 Codeception 不再提供该选项。

这就是我安装它的方式。在玩了很多之后,我提取了我的代码版本before codeception 并使用composer require codeception/codeception --dev 安装(所以是完整 版本)。以这种方式安装后,我没有任何问题。

【讨论】:

    【解决方案2】:

    你的 codeception.yml 配置文件有没有这个部分:

    params:
    - .env
    - .env.test
    - ...
    

    如果有,您需要检查列表中的最后一个 .env 文件并确保它设置了 DATABASE_URL 变量

    另一种解决方案是从列表中删除除您的应用正在使用的 .env 之外的所有文件。 (我不建议这样做)

    当加载此列表中的每个文件时,它会覆盖前一个文件中存在的变量。

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 2018-07-05
      • 2019-01-15
      • 2018-07-09
      • 2016-07-11
      • 2013-04-17
      • 2015-11-08
      • 1970-01-01
      相关资源
      最近更新 更多