【发布时间】:2019-05-19 12:36:46
【问题描述】:
我已经为这个函数创建了一个测试:
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 数据库。问题是:在测试过程中如何切换要使用的数据库?这是测试:
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")。
【问题讨论】:
-
如果我很了解测试,您通常应该使用具有不同配置、服务...文件(例如 .yaml 或 .xml)的不同环境(“测试”)。
标签: php unit-testing symfony symfony4