container = $this->createMock(Container::class); $this->resolver = new LogChannelAttributeResolver($this->container); }); describe('LogChannelAttributeResolver', function () { it('supports LogChannel attribute', function () { $reflectionParam = new \ReflectionParameter( [ServiceWithLogChannel::class, '__construct'], 0 ); $attributes = $reflectionParam->getAttributes(LogChannelAttribute::class); expect($attributes)->not->toBeEmpty(); expect($this->resolver->supports($attributes[0]))->toBeTrue(); }); it('does not support other attributes', function () { $reflectionParam = new \ReflectionParameter( [ServiceWithLogChannel::class, '__construct'], 0 ); $attributes = $reflectionParam->getAttributes(); // Prüfe, ob es ein anderes Attribut gibt (falls vorhanden) foreach ($attributes as $attr) { if ($attr->getName() !== LogChannelAttribute::class) { expect($this->resolver->supports($attr))->toBeFalse(); } } }); it('resolves LogChannel attribute to channel logger', function () { $mainLogger = new DefaultLogger(); $this->container->expects($this->once()) ->method('get') ->with(SupportsChannels::class) ->willReturn($mainLogger); $className = ClassName::create(ServiceWithLogChannel::class); $reflectionParam = new \ReflectionParameter( [ServiceWithLogChannel::class, '__construct'], 0 ); $result = $this->resolver->resolve($reflectionParam, $className, '__construct'); expect($result)->toBeInstanceOf(Logger::class); expect($result)->toBeInstanceOf(HasChannel::class); expect($result->channel)->toBe(LogChannel::CACHE); }); });