Symfony4: Doctrine2 работает, но нет соединения в тесте PHPUnit (ядро загружено)

Странная проблема в Symfony4: Doctrine работает, я могу проверить схему, создать базу данных и т. д., используя php bin/console doctrine:schema:create. Но мой тест PHPUnit не имеет соединения. Запустив ./bin/phpunit, я получаю исключение SQLSTATE[HY000] [2002] No such file or directory.

Я выполнил шаги в документации по загрузке ядра: http://symfony.com/doc/current/testing/doctrine.html

Мой код:

class PersistingResultTest extends KernelTestCase
{
    protected $em;

    protected function setUp()
    {
        $kernel = self::bootKernel();

        $this->em = $kernel->getContainer()
            ->get('doctrine')
            ->getManager();
    }

    public function testPersistingLogFile()
    {
        // Just a simple schema command to test connection
        $tool = new SchemaTool($this->em);
        $tool->createSchema($this->em->getMetadataFactory()->getAllMetadata());
    }


   protected function tearDown()
    {
        parent::tearDown();

        $this->em->close();
        $this->em = null; // avoid memory leaks
    }
}

Кто-нибудь знает, почему это происходит? Жук?

РЕДАКТИРОВАТЬ:

По-видимому, файл .env не читается должным образом. Я переместил переменную среды DATABASE_URL в файл doctrine.yml, и теперь она работает.


person mauserrifle    schedule 09.01.2018    source источник


Ответы (1)


Вы должны поместить DATABASE_URL в свой файл phpunit.xml, например. как это:

<php>
        <ini name="error_reporting" value="-1" />
        <env name="KERNEL_CLASS" value="App\Kernel" />
        <env name="APP_ENV" value="test" />

        <!-- ###+ doctrine/doctrine-bundle ### -->
        <!-- Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url -->
        <!-- For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db" -->
        <!-- Configure your db driver and server_version in config/packages/doctrine.yaml -->
        <env name="DATABASE_URL" value="mysql://[email protected]:3306/symfony4-database"/>
        <!-- ###- doctrine/doctrine-bundle ### -->
    </php>
person baris1892    schedule 09.01.2018
comment
Или вы также можете использовать базу данных SQLite, которая быстрее и не рискует изменить вашу реальную базу данных! - person Louis-Marie Matthews; 10.01.2018