symfony4: как мне настроить dataFixture для записи в тестовой БД - PullRequest
0 голосов
/ 29 июня 2018

Я хочу загрузить тестовые данные для моих модульных тестов в тестовую базу данных через DataFixtures. В документации сказано, что если я устанавливаю переменную окружения, следует использовать тестовую базу данных:

$ php bin/console doctrine:fixtures:load --env=test
Careful, database will be purged. Do you want to continue y/N ?y
  > purging database
  > loading App\DataFixtures\PropertyFixtures
  > loading App\DataFixtures\UserFixtures
  > loading App\DataFixtures\UserPropertyFixtures

Однако, если я проверю данные, попадающие в мою базу данных по умолчанию.

Где я могу настроить свою тестовую базу данных с помощью symfony 4?

А где мне его настроить, чтобы DataFixtures знал, куда писать?

Для своих функциональных тестов я настроил параметр db в phpunit.xml

1 Ответ

0 голосов
/ 03 июля 2018

То, что мы сделали, чтобы решить это, было следующим. Я не знаю, является ли это хорошим способом, поэтому альтернативные решения все еще ценятся.

в ../config/packages есть файл doctrine.yaml

Я скопировал файл в папку ./config/packages/test и отредактировал его следующим образом:

parameters:
    # Adds a fallback DATABASE_URL if the env var is not set.
    # This allows you to run cache:warmup even if your
    # environment variables are not available yet.
    # You should not need to change this value.
    env(DATABASE_URL): ''

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_mysql'
        server_version: '5.7'
        charset: utf8
        default_table_options:
            charset: utf8
            collate: utf8_unicode_ci

        url: mysql://%db_user_test%:%db_password_test%@%db_host_test%:%db_port_test%/%db_name_test%
    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
            App:
                is_bundle: false
                type: annotation
                dir: '%kernel.project_dir%/src/Entity'
                prefix: 'App\Entity'

То, что я изменил, было похоже на url: mysql ....

В свои параметры я добавил параметры db_user_test и т. Д. И использовал их для подключения к тестовой базе данных.

Это работает, но все же я не уверен, если это так, как это должно быть сделано.

...