Я переписывал один из своих проектов на Symfony 5. Я заметил нечто странное в переменных env. Я больше не могу получить их так, как раньше, в функциональных тестах.
Не то, чтобы это важно, но у меня есть собственный 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'
}
}
# this is .env.test file
############################################################################################################
#
# GENERAL SETTINGS
#
############################################################################################################
KERNEL_CLASS='App\Kernel'
APP_ENV=test
############################################################################################################
#
# TEST DATABASE CONFIGURATION
#
############################################################################################################
TEST_ENV_VARIABLE='my secret env value'
TEST_ENV_VARIABLE
возвращается как ложное. Всегда. Не имеет значения, помещаю ли я его в .env.test
или phpunit.xml.dist
или в любой другой файл, на который я укажу. Всегда возвращается как false
.
Что интересно - у меня не было этой проблемы в Symfony 4. Я смотрю на свой старый код и просто getenv()
просто работает.
Я провел небольшое исследование, и в файле config/bootstrap.php
все мои переменные для тестовой ENV видны в $_SERVER
, но по какой-то причине они никогда не перетаскиваются в ENV. Есть ли что-то другое в Symfony 5 по этому поводу?
Я просмотрел документы, но не нашел ничего, что могло бы мне помочь (или я просто пропустил это). Кто-нибудь знает, что это может быть?
Если честно, ни одна из переменных ENV не присутствует, когда я использую getenv()
в своих тестах. Даже стандартные, поставляемые с Symfony.
. Я использую Symfony PHP блочный мост и просто запускаю свои тесты следующим образом:
./bin/phpunit tests/Integration/Container/Controllers/ContainerControllerTest.php
Я почти уверен, что это как-то связано с моей настройкой - просто не уверен, что это могло быть.