我在Symfony4中有一个带有学说DB的项目,一切都飞了。
我想用Codeception添加一些功能和单元测试。我按照文档将其添加到我的functional.suite.yml中:
actor: FunctionalTester
modules:
enabled:
- Symfony:
app_path: 'src'
environment: 'test'
- Doctrine2:
depends: Symfony
# cleanup: true
- HelperFunctional
# - Db
step_decorators: ~
但是,当运行供应商/bin/codecept运行时,我得到了一个丑陋的:
在 EnvVarProcessor 中.php第 131 行:
找不到环境变量:"DATABASE_URL"。
我在文档中看不到任何其他相关内容,所以不确定我错过了什么。
你的codeception.yml配置文件有这个部分吗:
params:
- .env
- .env.test
- ...
如果有,则需要检查列表中的最后一个 .env 文件,并确保它设置了DATABASE_URL变量。
另一种解决方案是从列表中删除除应用正在使用的 .env 之外的所有文件。(我不建议(
加载此列表中的每个文件时,它将覆盖上一个文件中存在的变量。
不幸的是,我无法解释它背后的机制,但要解决它,我不得不将DATABASE_URL环境变量添加到我的操作系统中。
export DATABASE_URL='mysql: ...';
这对我来说似乎非常奇怪的解决方案(同样,我不知道为什么Codeception需要这个(,所以我一直在挖掘。我后来发现的东西,但似乎实际上导致整个情况是我安装 Codeception 的方式。如果您转到codeception文档,则可以阅读:
如果您不打算进行验收测试,则可以通过要求
。codeception/base
来最大程度地安装Codeception
编辑 2020 年 7 月:有关最小安装的信息已从链接网站中删除,看起来 Codeception 不再提供该选项。
这就是我安装它的方式。在玩了很多之后,我在codeception之前提取了一个版本的代码并使用composer require codeception/codeception --dev
安装(所以完整版本(。以这种方式安装后,我没有任何问题。