CheckExceptionOnInvalidReferenceBehaviorPassTest.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace Symfony\Tests\Component\DependencyInjection\Compiler;
  3. use Symfony\Component\DependencyInjection\Definition;
  4. use Symfony\Component\DependencyInjection\Compiler\CheckExceptionOnInvalidReferenceBehaviorPass;
  5. use Symfony\Component\DependencyInjection\Reference;
  6. use Symfony\Component\DependencyInjection\ContainerBuilder;
  7. class CheckExceptionOnInvalidReferenceBehaviorPassTest extends \PHPUnit_Framework_TestCase
  8. {
  9. public function testProcess()
  10. {
  11. $container = new ContainerBuilder();
  12. $container
  13. ->register('a', '\stdClass')
  14. ->addArgument(new Reference('b'))
  15. ;
  16. $container->register('b', '\stdClass');
  17. }
  18. /**
  19. * @expectedException Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException
  20. */
  21. public function testProcessThrowsExceptionOnInvalidReference()
  22. {
  23. $container = new ContainerBuilder();
  24. $container
  25. ->register('a', '\stdClass')
  26. ->addArgument(new Reference('b'))
  27. ;
  28. $this->process($container);
  29. }
  30. /**
  31. * @expectedException Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException
  32. */
  33. public function testProcessThrowsExceptionOnInvalidReferenceFromInlinedDefinition()
  34. {
  35. $container = new ContainerBuilder();
  36. $def = new Definition();
  37. $def->addArgument(new Reference('b'));
  38. $container
  39. ->register('a', '\stdClass')
  40. ->addArgument($def)
  41. ;
  42. $this->process($container);
  43. }
  44. private function process(ContainerBuilder $container)
  45. {
  46. $pass = new CheckExceptionOnInvalidReferenceBehaviorPass();
  47. $pass->process($container);
  48. }
  49. }