Symfony 4, как использовать тест базы данных - PullRequest
0 голосов
/ 19 мая 2019

Я создал тест для этой функции:

public function userRegistrationDatabase(String $email, String $keyRockId): object
{
    $entityManager = $this->getDoctrine()->getManager("gui");
    $user = new User();
    $user->setUserName($email);
    $user->setEmail($email);
    $user->setEnabled(true);
    $userRole = ['ROLE_USER','ROLE_ADMIN'];
    $user->addRole(implode(",",$userRole));
    $user->setKeyrockId($keyRockId);
    $entityManager->persist($user);
    $entityManager->flush();

    return $user;
}

Я также создал sqlite db только для целей тестирования.Вопрос в том, как во время теста я могу использовать db для использования?Это тест:

public function testUserRegistrationDatabase()
{
    $userManager = self::$kernel->getContainer()
        ->get('test.'. UserManagement::class);
    $mail = 'notexistinguser@mail.com';
    $keyRockId = '45091fd63a1';

    $user = $userManager->userRegistrationDatabase($mail,$keyRockId);

}

дБ, которую я хотел бы использовать:

self::$kernel->getContainer()
        ->get('doctrine')
        ->getManager('test_gui');

Так что в основном функция использует getManager("gui"), но в тесте я хотел бы использовать getManager("test_gui").

1 Ответ

0 голосов
/ 19 мая 2019

Чтобы использовать getManager("test_gui"), вам нужно определить соединение с базой данных с этим именем.В Symfony 3 такая конфигурация может выглядеть следующим образом:

../app/config.yml (см. документы ):

...
     doctrine
        connections:
            ...
            test_gui:
                driver:   pdo_sqlite
                path:     %kernel.root_dir%/cache/test/test.sqlite

В Symfony 4 есть аналогичная конфигурация (см. документы ):

../config/packages/doctrine.yaml:

...
doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                # configure these for your database server
                url: '%env(DATABASE_URL)%'
                driver: 'pdo_mysql'
                server_version: '5.7'
                charset: utf8mb4
            test_gui:
                # configure these for your database server
                url: '%env(DATABASE_TEST_URL)%'
                driver: 'pdo_sqlite'

, где DATABASE_TEST_URL может быть "sqlite:///%kernel.root_dir%/cache/test/test.sqlite"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...