>source

이 기능에 대한 테스트를 만들었습니다 :

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);
}

사용하려는 db는 다음과 같습니다.

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

기본적으로 함수는 getManager("gui") 를 사용합니다.  하지만 테스트에서 getManager("test_gui") 를 사용하고 싶습니다 .


  • 답변 # 1

    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" 일지도 모른다

  • 이전 java - BarChart를 투명하게 만드는 방법
  • 다음 oop - Visual Studio Code에서 C ++에서 선언하고 정의한 클래스를 찾을 수 없습니다