Я использую Codeception для приемочных испытаний.Однако, поскольку мне нужно предварительно заполнить базу данных необходимыми сущностями, мне нужно ядро Symfony.Я создал TestKernel:
class TestKernel extends KernelTestCase
{
public static function boot(): ContainerInterface
{
$_ENV['KERNEL_CLASS'] = 'App\Kernel';
$_ENV['APP_ENV'] = 'test';
putenv('APP_ENV=test');
require_once codecept_root_dir('config/bootstrap.php');
static::bootKernel();
return static::$container;
}
}
Здесь я расширяю от Symfony\Bundle\FrameworkBundle\Test\KernelTestCase
, как это используется в тестах phpunit.Мне также требуется config/bootstrap.php
, как phpunit.xml
.И я пытаюсь установить тестовый env, но пока он не работает.Я пробовал $_SERVER, $_ENV, putenv
, но все они дают один и тот же результат: .env.dev
загружается вместо .env.test
.Не могу получить подсказку.При запуске APP_ENV=test ./vendor/bin/codecept run
используется тестовый env.Я думал, что я должен быть в состоянии установить env в php.В любом случае phpunit делает это как-то.
Редактировать Я вижу, что это вызвало некоторую путаницу.Позвольте мне показать, как я использую TestKernel
:
class PageCest {
public function _before(AcceptanceTester $I)
{
$this->container = TestKernel::boot();
$this->fixture->setContainer($this->container)->createProducts();
$I->amOnPage('/my-page');
}
}
Как вы видите, я создаю совершенно отдельный экземпляр Symfony в приемочном тесте (другого пути не вижу).