【问题标题】:LANG variable isn't overriden in testing environmentLANG 变量在测试环境中未被覆盖
【发布时间】:2021-04-26 15:27:10
【问题描述】:

我正在开发一个 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 都没有显示此变量的正确值,它的值只是es_ES.UTF-8,值我的 Ubuntu 系统中的 $LANG 变量。

我在.env.test.local 文件中定义了其他环境变量,这些都是正确的(如DATABASE_URL)。我也尝试在phpunit.xml.dist 文件(<env name="LANG" value="ca" />)中添加LANG,但它的值没有改变,它仍然是es_ES.UTF-8

我也删除了var/cache/test目录,但还是不行。

我做错了什么?如何更改测试环境中的语言?

【问题讨论】:

  • 您能否通过传递 $LANG=ca 来测试运行您的测试,例如 $LANG=ca ./bin/phpunit?我必须确认它,但您系统的环境变量是主要使用的(最重要的)
  • @qdequippe 你是对的:我打开了一个新终端,运行export LANG=ca,然后运行bin/phpunit,网站内容的语言是正确的。此外,运行bin/console debug:container --env-vars --env=test 显示正确的语言......另外,如果我显示开发环境的变量,语言也是ca(系统中的一种)而不是es,@ 中的一种987654347@ 文件。但为什么呢?

标签: symfony testing phpunit symfony-4.4


【解决方案1】:

查看https://symfony.com/doc/current/configuration.html#overriding-environment-values-via-env-local

真正的环境变量总是胜过任何 .env 文件创建的环境变量。

【讨论】:

  • 好的,所以我必须重命名我的变量,不是吗?
  • 是或在您使用控制台时覆盖它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多