HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/agile-selling-wpb/vendor/slince/di/Tests/ResolverTest.php
<?php

namespace Slince\Di\Tests;

use PHPUnit\Framework\TestCase;
use Slince\Di\Definition;
use Slince\Di\Resolver;
use Slince\Di\Container;
use Slince\Di\Exception\DependencyInjectionException;
use Slince\Di\Tests\TestClass\ActorInterface;
use Slince\Di\Tests\TestClass\Director;

class ResolverTest extends TestCase
{
    public function testResolve()
    {
        $container = new Container();
        $resolver = new Resolver($container);
        $definition = new Definition(Director::class);
        $this->assertInstanceOf(Director::class, $resolver->resolve($definition));
    }

    public function testResolveInvalidClass()
    {
        $container = new Container();
        $resolver = new Resolver($container);
        $definition = new Definition('invalid-class');
        $this->expectException(DependencyInjectionException::class);
        $resolver->resolve($definition);
    }

    public function testResolveNotInstantiateClass()
    {
        $container = new Container();
        $resolver = new Resolver($container);
        $definition = new Definition(ActorInterface::class);
        $this->expectException(DependencyInjectionException::class);
        $resolver->resolve($definition);
    }

    public function testResolveWithProperty()
    {
        $container = new Container();
        $resolver = new Resolver($container);
        $definition = new Definition(Director::class);
        $definition->setProperties([
            'gender' => 'male',
        ]);
        $this->assertEquals('male', $resolver->resolve($definition)->gender);
        $definition->setProperty('no_exist_property', 'foo');
        $this->assertEquals('foo', $resolver->resolve($definition)->no_exist_property);
    }
}