You are here

public function ContainerAwareEventDispatcherTest::testDispatchWithCallables in Drupal 8

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php \Drupal\Tests\Component\EventDispatcher\ContainerAwareEventDispatcherTest::testDispatchWithCallables()
  2. 10 core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php \Drupal\Tests\Component\EventDispatcher\ContainerAwareEventDispatcherTest::testDispatchWithCallables()

File

core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php, line 90

Class

ContainerAwareEventDispatcherTest
Unit tests for the ContainerAwareEventDispatcher.

Namespace

Drupal\Tests\Component\EventDispatcher

Code

public function testDispatchWithCallables() {

  // When passing in callables exclusively as listeners into the event
  // dispatcher constructor, the event dispatcher must not attempt to
  // resolve any services.
  $container = $this
    ->getMockBuilder(ContainerInterface::class)
    ->getMock();
  $container
    ->expects($this
    ->never())
    ->method($this
    ->anything());
  $firstListener = new CallableClass();
  $secondListener = function () {
  };
  $thirdListener = [
    new TestEventListener(),
    'preFoo',
  ];
  $listeners = [
    'test_event' => [
      0 => [
        [
          'callable' => $firstListener,
        ],
        [
          'callable' => $secondListener,
        ],
        [
          'callable' => $thirdListener,
        ],
      ],
    ],
  ];
  $dispatcher = new ContainerAwareEventDispatcher($container, $listeners);
  $dispatcher
    ->dispatch('test_event');
  $this
    ->assertTrue($thirdListener[0]->preFooInvoked);
}