Bravo3\Orm\Tests\EntityManagerTest::testIntercepts PHP Метод

testIntercepts() публичный Метод

public testIntercepts ( EntityManager $em )
$em Bravo3\Orm\Services\EntityManager
    public function testIntercepts(EntityManager $em)
    {
        $em->getDispatcher()->addListener(Event::PRE_RETRIEVE, function (RetrieveEvent $event) {
            // Return something completely different instead
            $event->setReturnValue(new Article());
            $event->setAbort(true);
        });
        $em->getDispatcher()->addListener(Event::POST_PERSIST, function (PersistEvent $event) {
            /** @var Product $entity */
            $entity = $event->getEntity();
            $this->assertTrue($entity instanceof Product);
            $entity->setName('Persisted Product');
        });
        $product = new Product();
        $product->setId(111)->setName('New Product')->setCreateTime(new \DateTime());
        $em->persist($product);
        $em->flush();
        $this->assertEquals('Persisted Product', $product->getName());
        $retrieved = $em->retrieve(Product::class, 111);
        $this->assertTrue($retrieved instanceof Article);
    }