Rob*_*ert 4 integration-testing environment-variables functional-testing symfony symfony5
我正在将我的一个项目重写为 Symfony 5。我注意到环境变量有些奇怪。我无法再像以前在功能测试中获取它们一样获取它们了。
这并不重要,但我有自己的习惯ApiTestCase,它扩展了 Symfony 5 附带的现有测试用例。
在那里我正在做类似的事情(这不是关于我的应用程序的设计或流程的问题,只是关于如何获取变量):
<?php
namespace App\Tests;
use App\Traits\Tools\Tests\Database\UsesTestDatabase;
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
/**
* Class ApiTestCase
* @package App\Tests
*/
class ApiTestCase extends WebTestCase
{
/**
* ApiTestCase constructor.
*/
public function __construct()
{
parent::__construct();
dd(getenv('TEST_ENV_VARIABLE')) // should give me 'my secret env value'
}
}
Run Code Online (Sandbox Code Playgroud)
# this is .env.test file
############################################################################################################
#
# GENERAL SETTINGS
#
############################################################################################################
KERNEL_CLASS='App\Kernel'
APP_ENV=test
############################################################################################################
#
# TEST DATABASE CONFIGURATION
#
############################################################################################################
TEST_ENV_VARIABLE='my secret env value'
Run Code Online (Sandbox Code Playgroud)
TEST_ENV_VARIABLE返回为 false。总是。我是否将其放入.env.test或phpunit.xml.dist我将指向的任何其他文件中都没关系。总是以 的形式返回false。
有趣的是 - 我在 Symfony 4 中没有遇到这个问题。我正在查看我的旧代码,并且可以getenv()正常工作。
我做了一些调查,在config/bootstrap.php文件中,测试 ENV 的所有变量都可见$_SERVER,但由于某种原因,它们从未被拖入 ENV 中。Symfony 5 在这方面有什么不同吗?
我查看了文档,但没有看到任何可以帮助我的内容(或者我只是错过了)。有谁知道那可能是什么?
老实说,当我getenv()在测试中使用时,没有任何 ENV 变量存在。即使是 Symfony 附带的默认版本。
我正在使用 Symfony PHP 单元桥,并像这样运行我的测试:
./bin/phpunit tests/Integration/Container/Controllers/ContainerControllerTest.php
我几乎可以肯定这与我的设置有关 - 只是不确定它可能是什么。
| 归档时间: |
|
| 查看次数: |
6674 次 |
| 最近记录: |