问题描述
我正在处理一个 Symfony 4.4 项目。该项目是从头开始创建的(它不是 3.4 代码库或类似内容的更新)。我正在向我的代码库添加自动化测试,但我遇到了环境变量问题。
在我的 .env
、.env.local
、.env.test
和 .env.test.local
中,我定义了一个 LANG
变量来设置应用程序语言。为了在我开发时正确测试翻译,我在 dev
环境(.env.local
文件)中设置了 LANG=es
,并且它可以正常工作。在生产中它也能正常工作,但在测试中,在 .env.test.local
文件中我设置了 LANG=ca
但 PHPUnit 和 bin/console debug:container --env-vars --env=test
都没有显示此变量的正确值,它的值只是 { {1}},我的 Ubuntu 系统中 es_ES.UTF-8
变量的值。
我在 $LANG
文件中定义了其他环境变量,这些都是正确的(如 .env.test.local
)。我还尝试在 DATABASE_URL
文件 (LANG
) 中添加 phpunit.xml.dist
,但它的值没有改变,它仍然是 <env name="LANG" value="ca" />
。
我也删除了 es_ES.UTF-8
目录,但它仍然不起作用。
我做错了什么?如何更改测试环境中的语言?
解决方法
检查https://symfony.com/doc/current/configuration.html#overriding-environment-values-via-env-local
真正的环境变量总是胜过由任何 .env 文件创建的环境变量。