Skip to content

Commit d0ec53b

Browse files
committed
Improve error message when defining messenger handler class that does not exists
1 parent 434d69c commit d0ec53b

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

DependencyInjection/MessengerPass.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,12 @@ private function registerHandlers(ContainerBuilder $container, array $busIds)
7979
throw new RuntimeException(sprintf('Invalid handler service "%s": bus "%s" specified on the tag "%s" does not exist (known ones are: %s).', $serviceId, $tag['bus'], $this->handlerTag, implode(', ', $busIds)));
8080
}
8181

82-
$r = $container->getReflectionClass($container->getDefinition($serviceId)->getClass());
82+
$className = $container->getDefinition($serviceId)->getClass();
83+
$r = $container->getReflectionClass($className);
84+
85+
if (null === $r) {
86+
throw new RuntimeException(sprintf('Invalid service "%s": class "%s" does not exist.', $serviceId, $className));
87+
}
8388

8489
if (isset($tag['handles'])) {
8590
$handles = isset($tag['method']) ? array($tag['handles'] => $tag['method']) : array($tag['handles']);

Tests/DependencyInjection/MessengerPassTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,22 @@ public function testGetClassesAndMethodsAndPrioritiesFromTheSubscriber()
194194
$this->assertSame(PrioritizedHandler::class, $secondHandlerDefinition->getClass());
195195
}
196196

197+
/**
198+
* @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
199+
* @expectedExceptionMessage Invalid service "NonExistentHandlerClass": class "NonExistentHandlerClass" does not exist.
200+
*/
201+
public function testThrowsExceptionIfTheHandlerClassDoesNotExist()
202+
{
203+
$container = $this->getContainerBuilder();
204+
$container->register('message_bus', MessageBusInterface::class)->addTag('messenger.bus');
205+
$container
206+
->register('NonExistentHandlerClass', 'NonExistentHandlerClass')
207+
->addTag('messenger.message_handler')
208+
;
209+
210+
(new MessengerPass())->process($container);
211+
}
212+
197213
/**
198214
* @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
199215
* @expectedExceptionMessage Invalid handler service "Symfony\Component\Messenger\Tests\DependencyInjection\HandlerMappingWithNonExistentMethod": method "Symfony\Component\Messenger\Tests\DependencyInjection\HandlerMappingWithNonExistentMethod::dummyMethod()" does not exist.

0 commit comments

Comments
 (0)