function ContainerAwareEventDispatcherTest::testDispatchWithCallables

Same name in other branches
  1. 8.9.x 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()
  3. 11.x core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php \Drupal\Tests\Component\EventDispatcher\ContainerAwareEventDispatcherTest::testDispatchWithCallables()

File

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

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(new Event(), 'test_event');
    $this->assertTrue($thirdListener[0]->preFooInvoked);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.