在 Symfony Flex / Symfony 4 的同一台机器上测试和开发环境

Test and Dev Enviroment on same machine in Symfony Flex / Symfony 4

我可以将我的数据库配置放在 config/packages/test/ 中的配置文件中吗?

我想 运行 在我的开发 PC 上进行测试并并行进行开发工作。 在 Symfony 3 中我有 2 个配置文件

config_test.yaml and config_dev.yaml

我可以在其中放置 2 个不同的数据库连接。 现在数据库连接在 .env 文件中,所以我不能有 2 个。

我还需要 运行 我的固定装置和数据库助手以及 2 个数据库(开发和测试)分开:

php bin/console doctrine:schema:update --force --env=dev
php bin/console doctrine:fixtures:load --no-interaction --env=dev

解决方案是从 .env 文件中删除数据库连接并再次将其移动到单独的配置文件中:

config/packages/开发/doctrine.yaml:

parameters:
    DATABASE_URL: 'mysql://root@localhost:3306/database'

和 config/packages/测试/doctrine.yaml:

parameters:
    DATABASE_URL: 'mysql://root@localhost:3306/database_test'

并且在主学说配置文件中config/packages/doctrine.yaml:

doctrine:
    dbal:
        url: '%DATABASE_URL%'

也在phpunit.xml.dist:

<env name="DATABASE_URL" value="mysql://root@localhost:3306/database_test" />

现在您可以在同一系统上拥有测试和开发环境,并且您的数据库不会被测试数据污染,您可以使用以下方式更新数据库:

php bin/console doctrine:schema:update --force --env=dev
php bin/console doctrine:schema:update --force --env=test