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 */