phpunitのエンティティマネージャに問題があります。エンティティマネージャとsymfony 2の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]' => '[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()));
}
、これはオリジナルの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,
));
}
あなたが見ることができるように私は私を作成したとき、私は自己:: $ EMを交換しますクライアント。
私の問題:私のテストで
、die()
は私のテストで登録されている古いメールではなく、新たな電子メール([email protected]
)を得ました。しかし私のデータベースでは、[email protected]
が正しく保存されています。
データベースでユーザーを取得すると、私はsefl::$em
を使用します。コメントに$em
を使用すると、正しい新しいメールが取得されます。
私のWebTestCaseで、私は新しいエンティティマネージャにアクセスすることができますなぜ私は理解していない...
サイドノートでは:地球上であなたが死ぬのはなぜ(のvar_dump())、有益な何かを返すのvar_dump行いませんどちらも、またあなたは、テストの途中で()死ぬ必要があるはずです。 – conny