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 件のコメント:
コメントを投稿