use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; class PostLoadTest extends KernelTestCase { /** * @var Doctrine\ORM\EntityManager */ private $em; protected function setUp() { self::bootKernel(); $this->em = static::$kernel->getContainer() ->get('doctrine') ->getManager(); } public function testPostLoad() { $entity = new \Hyoujun\AppBundle\Entity\AnEntity(); //... $this->em->persist($entity); $this->em->flush(); self::bootKernel();//ここでプロセスをリフレッシュ。 $loaded = $this->em->getRepository('HyoujunAppBundle:AnEntity') ->find($entity->getId()); //...(postLoadが呼ばれたかを検証) } protected function tearDown() { parent::tearDown(); $this->em->close(); $this->em = null; } }Symfony\Bundle\FrameworkBundle\Test\KernelTestCase::bootKernel()で、プロセスをリフレッシュすれば、postLoad()が呼ばれる。
21世紀のライフスタイルに合った新しい装束 ―
日本標準機構では、日本の装束をカジュアルにアレンジして販売しています。
狩衣(かりぎぬ)、直衣(のうし)、直垂(ひたたれ)などを現代のライフスタイルに合わせてより着やすく、よりカジュアルに。
カジュアル装束の販売は
日本標準機構
2017年9月23日土曜日
テストではbootKernel()でリフレッシュしないとpostLoad()が呼ばれない場合がある
イベントリスナーのpostLoadはEntityを取得した後で実行される。しかしユニットテストなどで、あるEntityをEntityManagerによって登録したあと、そのEntityManagerから再び同じEntityを取得すると、イベントが発生しない。その場合は、取得前に一旦、プロセスをリフレッシュすればイベントが発生するようになる。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿