diff --git a/core/tests/Drupal/Tests/BrowserTestBase.php b/core/tests/Drupal/Tests/BrowserTestBase.php index b12ba60b8a..83e43605fe 100644 --- a/core/tests/Drupal/Tests/BrowserTestBase.php +++ b/core/tests/Drupal/Tests/BrowserTestBase.php @@ -66,6 +66,7 @@ createUser as drupalCreateUser; } use XdebugRequestTrait; + use Phpunit5FCTrait; /** * The database prefix of this test run. diff --git a/core/tests/Drupal/Tests/Phpunit5FCTrait.php b/core/tests/Drupal/Tests/Phpunit5FCTrait.php index 17f7b73577..d5eb48b7b6 100644 --- a/core/tests/Drupal/Tests/Phpunit5FCTrait.php +++ b/core/tests/Drupal/Tests/Phpunit5FCTrait.php @@ -85,7 +85,42 @@ public function getMock($originalClassName, $methods = array(), array $arguments */ public function createMock($originalClassName, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE, $cloneArguments = FALSE, $callOriginalMethods = FALSE, $proxyTarget = NULL) { if ($this->isPhpunit5()) { - return parent::createMock($originalClassName, $methods, $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $cloneArguments, $callOriginalMethods, $proxyTarget); + $mock = $this->getMockBuilder($originalClassName) + ->setMethods($methods) + ->setConstructorArgs($arguments) + ->setMockClassName($mockClassName) + ->setProxyTarget($proxyTarget); + if ($callOriginalConstructor) { + $mock->enableOriginalConstructor(); + } + else { + $mock->disableOriginalConstructor(); + } + if ($callOriginalClone) { + $mock->enableOriginalClone(); + } + else { + $mock->disableOriginalClone(); + } + if ($callAutoload) { + $mock->enableAutoload(); + } + else { + $mock->disableAutoload(); + } + if ($cloneArguments) { + $mock->enableArgumentCloning(); + } + else { + $mock->disableArgumentCloning(); + } + if ($callOriginalMethods) { + $mock->enableProxyingToOriginalMethods(); + } + else { + $mock->disableProxyingToOriginalMethods(); + } + return $mock->getMock(); } return parent::getMock($originalClassName, $methods, $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $cloneArguments, $callOriginalMethods, $proxyTarget); } diff --git a/core/tests/Drupal/Tests/Phpunit5FCTraitTest.php b/core/tests/Drupal/Tests/Phpunit5FCTraitTest.php index 621003f6b3..7871d69c10 100644 --- a/core/tests/Drupal/Tests/Phpunit5FCTraitTest.php +++ b/core/tests/Drupal/Tests/Phpunit5FCTraitTest.php @@ -64,6 +64,21 @@ public function getMock($originalClassName) { */ class Phpunit5TestClass { public function createMock($originalClassName) { + throw new \Exception('This method should never be called'); + } + + public function getMockbuilder() { + return new Mockbuilder(); + } + +} + +class Mockbuilder { + public function __call($name, $arguments) { + return $this; + } + + public function getMock() { return 'PHPUnit 5'; }