You are here

public function StaticDiscoveryDecoratorTest::testCall in Drupal 9

Same name and namespace in other branches
  1. 8 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));
}