function ProtectedPrivatesTest::testPrivateAdd

Same name and namespace in other branches
  1. 4.0.x modules/phpunit_example/tests/src/Unit/ProtectedPrivatesTest.php \Drupal\Tests\phpunit_example\Unit\ProtectedPrivatesTest::testPrivateAdd()

Test ProtectedPrivate::privateAdd().

We want to test a private method on a class. This is problematic because, by design, we don't have access to this method. However, we do have a tool available to help us out with this problem: We can override the accessibility of a method using reflection.

@dataProvider addDataProvider

File

modules/phpunit_example/tests/src/Unit/ProtectedPrivatesTest.php, line 72

Class

ProtectedPrivatesTest
ProtectedPrivates unit testing of restricted methods.

Namespace

Drupal\Tests\phpunit_example\Unit

Code

public function testPrivateAdd($expected, $a, $b) {
  // Get a reflected, accessible version of the privateAdd() method.
  $private_method = $this->getAccessibleMethod('Drupal\\phpunit_example\\ProtectedPrivates', 'privateAdd');
  // Create a new ProtectedPrivates object.
  $pp = new ProtectedPrivates();
  // Use the reflection to invoke on the object.
  $sum = $private_method->invokeArgs($pp, [
    $a,
    $b,
  ]);
  // Make an assertion.
  $this->assertEquals($expected, $sum);
}