function StaticDiscoveryDecoratorTest::testCall

Same name in other branches
  1. 9 core/tests/Drupal/Tests/Component/Plugin/Discovery/StaticDiscoveryDecoratorTest.php \Drupal\Tests\Component\Plugin\Discovery\StaticDiscoveryDecoratorTest::testCall()
  2. 10 core/tests/Drupal/Tests/Component/Plugin/Discovery/StaticDiscoveryDecoratorTest.php \Drupal\Tests\Component\Plugin\Discovery\StaticDiscoveryDecoratorTest::testCall()
  3. 11.x core/tests/Drupal/Tests/Component/Plugin/Discovery/StaticDiscoveryDecoratorTest.php \Drupal\Tests\Component\Plugin\Discovery\StaticDiscoveryDecoratorTest::testCall()

@covers ::__call @dataProvider providerCall

File

core/tests/Drupal/Tests/Component/Plugin/Discovery/StaticDiscoveryDecoratorTest.php, line 199

Class

StaticDiscoveryDecoratorTest
@group Plugin @coversDefaultClass \Drupal\Component\Plugin\Discovery\StaticDiscoveryDecorator

Namespace

Drupal\Tests\Component\Plugin\Discovery

Code

public function testCall($method, $args) {
    // Mock a decorated object.
    $mock_decorated = $this->getMockBuilder('Drupal\\Component\\Plugin\\Discovery\\DiscoveryInterface')
        ->setMethods([
        $method,
    ])
        ->getMockForAbstractClass();
    // Our mocked method will return any arguments sent to it.
    $mock_decorated->expects($this->once())
        ->method($method)
        ->willReturnCallback(function () {
        return \func_get_args();
    });
    // Create a mock decorator.
    $mock_decorator = $this->getMockBuilder('Drupal\\Component\\Plugin\\Discovery\\StaticDiscoveryDecorator')
        ->disableOriginalConstructor()
        ->getMock();
    // Poke the decorated object into our decorator.
    $ref_decorated = new \ReflectionProperty($mock_decorator, 'decorated');
    $ref_decorated->setAccessible(TRUE);
    $ref_decorated->setValue($mock_decorator, $mock_decorated);
    // Exercise __call.
    $this->assertEquals($args, \call_user_func_array([
        $mock_decorated,
        $method,
    ], $args));
}

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