我PHPUnit中有我的实体管理器的问题。
这是我的测试:
public function testValidChangeEmail()
{
$client = self::createAuthClient('user','password');
$crawler = $client->request('GET', '/user/edit/30');
$crawler = $client->submit($crawler->selectButton('submit')->form(array(
'form[email]' => 'new@email.com',
)));
/*
* With this em, this work perfectly
* $em = $client->getContainer()->get('doctrine.orm.entity_manager');
*/
$user = self::$em->getRepository('MyBundle:User')->findUser('new@email.com');
die(var_dump($user->getEmail()));
}
这是我WebTestCase延伸原有WebTestCase:
class WebTestCase extends BaseWebTestCase
{
static protected $container;
static protected $em;
static protected function createClient(array $options = array(), array $server = array())
{
$client = parent::createClient($options, $server);
self::$em = $client->getContainer()->get('doctrine.orm.entity_manager');
self::$container = $client->getContainer();
return $client;
}
protected function createAuthClient($user, $pass)
{
return self::createClient(array(), array(
'PHP_AUTH_USER' => $user,
'PHP_AUTH_PW' => $pass,
));
}
正如你所看到的,我更换时,我创造了我的客户自:: $他们。
我的问题:
在我的测试中, die()
给我的旧电子邮件,而不是新的电子邮件( new@email.com
已在试验注册)。 然而,在我的数据库,我有new@email.com
正确保存。
当我找回我的数据库中的用户,我使用sefl::$em
。 如果我使用$em
的意见,我找回正确的新邮件。
我不明白,为什么在我的WebTestCase,我可以接触到新的实体管理器...