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
|
<?php
declare(strict_types=1);
namespace DI\Test\IntegrationTest\Issues;
use DI\ContainerBuilder;
use DI\Test\IntegrationTest\BaseContainerTest;
/**
* Test for constructor injection of parameters that are optional, and use an
* interface (or other uninstantiable) type hint.
*
* @link https://github.com/mnapoli/PHP-DI/pull/168
*/
class Issue168Test extends BaseContainerTest
{
/**
* @dataProvider provideContainer
*/
#[\PHPUnit\Framework\Attributes\DataProvider('provideContainer')]
public function testInterfaceOptionalParameter(ContainerBuilder $builder)
{
require_once __DIR__ . '/Issue168/class.php';
$container = $builder->build();
$object = $container->get(Issue168\TestClass::class);
$this->assertInstanceOf(Issue168\TestClass::class, $object);
}
/**
* @dataProvider provideContainer
* @requires PHP < 8.4.0
*/
#[\PHPUnit\Framework\Attributes\DataProvider('provideContainer')]
public function testInterfaceOptionalParameterForPHP83(ContainerBuilder $builder)
{
require_once __DIR__ . '/Issue168/class-php83.php';
$container = $builder->build();
$object = $container->get(Issue168\TestClass83::class);
$this->assertInstanceOf(Issue168\TestClass83::class, $object);
}
}
|