From b96156380fbf333f63ee7d6a6a88fee9f2ea9824 Mon Sep 17 00:00:00 2001 From: Sergei Morozov Date: Thu, 16 May 2019 09:39:57 -0700 Subject: [PATCH] Do not ignore constructor arguments based on type being mocked --- src/Framework/MockObject/Generator.php | 4 +--- tests/unit/Framework/MockObject/GeneratorTest.php | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Framework/MockObject/Generator.php b/src/Framework/MockObject/Generator.php index f3442a70a44..7d7d67cb774 100644 --- a/src/Framework/MockObject/Generator.php +++ b/src/Framework/MockObject/Generator.php @@ -593,9 +593,7 @@ private function getObject($code, $className, $type = '', $callOriginalConstruct { $this->evalClass($code, $className); - if ($callOriginalConstructor && - \is_string($type) && - !\interface_exists($type, $callAutoload)) { + if ($callOriginalConstructor) { if (\count($arguments) === 0) { $object = new $className; } else { diff --git a/tests/unit/Framework/MockObject/GeneratorTest.php b/tests/unit/Framework/MockObject/GeneratorTest.php index 51d1ebe42d4..e5609efa033 100644 --- a/tests/unit/Framework/MockObject/GeneratorTest.php +++ b/tests/unit/Framework/MockObject/GeneratorTest.php @@ -220,6 +220,12 @@ public function testMockingOfThrowable(): void $this->assertInstanceOf(MockObject::class, $stub); } + public function testMockingOfThrowableConstructorArguments(): void + { + $mock = $this->generator->getMock(Throwable::class, null, ['It works']); + $this->assertSame('It works', $mock->getMessage()); + } + public function testVariadicArgumentsArePassedToOriginalMethod() { /** @var ClassWithVariadicArgumentMethod|MockObject $mock */