1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
<?php
declare(strict_types=1);
namespace DI\Test\UnitTest\Proxy;
use DI\Proxy\ProxyFactory;
use DI\Test\UnitTest\Proxy\Fixtures\ClassToProxy;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RequiresPhp;
use PHPUnit\Framework\Attributes\Test;
use PHPUnit\Framework\TestCase;
/**
* @covers \DI\Proxy\ProxyFactory
*/
#[CoversClass(\DI\Proxy\ProxyFactory::class)]
class ProxyFactoryTest extends TestCase
{
/**
* @test
*/
#[Test]
#[RequiresPhp('< 8.4')]
public function should_create_lazy_proxies()
{
$factory = new ProxyFactory;
$instance = new ClassToProxy();
$initialized = false;
$initializer = function () use ($instance, &$initialized) {
$initialized = true;
return $instance;
};
/** @var ClassToProxy $proxy */
$proxy = $factory->createProxy(ClassToProxy::class, $initializer);
$this->assertFalse($initialized);
$this->assertInstanceOf(ClassToProxy::class, $proxy);
$proxy->foo();
$this->assertTrue($initialized);
$this->assertSame($instance, $proxy->getInstance());
}
}
|