Tengo un problema con mi Entity Manager en phpunit.Problema con Entity Manager y phpunit en Symfony 2
Esta es mi prueba:
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]' => '[email protected]',
)));
/*
* With this em, this work perfectly
* $em = $client->getContainer()->get('doctrine.orm.entity_manager');
*/
$user = self::$em->getRepository('MyBundle:User')->findUser('[email protected]');
die(var_dump($user->getEmail()));
}
y este es mi WebTestCase que se extiende WebTestCase el original:
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,
));
}
Como se puede ver, puedo reemplazar el self :: $ em cuando creé mi cliente.
Mi problema:
En mi prueba, el die()
Dame la edad de correo electrónico y no el nuevo correo electrónico ([email protected]
) que ha registrado en la prueba. Sin embargo, en mi base de datos, guardo correctamente el [email protected]
.
Cuando recupero mi usuario en la base de datos, uso sefl::$em
. Si utilizo el $em
en los comentarios, recupero el nuevo correo electrónico correcto.
No entiendo por qué en mi WebTestCase, puedo tener acceso a la nueva Gerente de la Entidad ...
Nota al margen: ¿Por qué en la tierra no se muere (var_dump()), ni hacer var_dump devolver nada útil, ni en caso de necesitar a morir() en el medio de una prueba. – conny