From ba47d85ec578e7635eb8db76d58d2467a5b52a4e Mon Sep 17 00:00:00 2001 From: RomanKis <romaikiss@gmail.com> Date: Wed, 15 Nov 2017 16:11:00 +0200 Subject: [PATCH] 9764: exception message is wrong and misleading in findAccessorMethodName() of Magento\Framework\Reflection\NameFinder --- .../Framework/Reflection/NameFinder.php | 3 ++- .../Reflection/Test/Unit/NameFinderTest.php | 26 +++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/lib/internal/Magento/Framework/Reflection/NameFinder.php b/lib/internal/Magento/Framework/Reflection/NameFinder.php index 97f4b2f81c1..5cd4ab744bb 100644 --- a/lib/internal/Magento/Framework/Reflection/NameFinder.php +++ b/lib/internal/Magento/Framework/Reflection/NameFinder.php @@ -99,8 +99,9 @@ class NameFinder } else { throw new \LogicException( sprintf( - 'Property "%s" does not have corresponding setter in class "%s".', + 'Property "%s" does not have accessor method "%s" in class "%s".', $camelCaseProperty, + $accessorName, $class->getName() ) ); diff --git a/lib/internal/Magento/Framework/Reflection/Test/Unit/NameFinderTest.php b/lib/internal/Magento/Framework/Reflection/Test/Unit/NameFinderTest.php index 9ddc6d6aa0c..ccf81305df6 100644 --- a/lib/internal/Magento/Framework/Reflection/Test/Unit/NameFinderTest.php +++ b/lib/internal/Magento/Framework/Reflection/Test/Unit/NameFinderTest.php @@ -37,7 +37,9 @@ class NameFinderTest extends \PHPUnit\Framework\TestCase /** * @expectedException \Exception - * @expectedExceptionMessageRegExp /Property "InvalidAttribute" does not have corresponding setter in class (.*?)/ + * @codingStandardsIgnoreStart + * @expectedExceptionMessage Property "InvalidAttribute" does not have accessor method "setInvalidAttribute" in class "Magento\Framework\Reflection\Test\Unit\DataObject" + * @codingStandardsIgnoreEnd */ public function testGetSetterMethodNameInvalidAttribute() { @@ -47,11 +49,31 @@ class NameFinderTest extends \PHPUnit\Framework\TestCase /** * @expectedException \Exception - * @expectedExceptionMessageRegExp /Property "ActivE" does not have corresponding setter in class (.*?)/ + * @codingStandardsIgnoreStart + * @expectedExceptionMessage Property "ActivE" does not have accessor method "setActivE" in class "Magento\Framework\Reflection\Test\Unit\DataObject" + * @codingStandardsIgnoreEnd */ public function testGetSetterMethodNameWrongCamelCasedAttribute() { $class = new ClassReflection("\\Magento\\Framework\\Reflection\\Test\\Unit\\DataObject"); $this->nameFinder->getSetterMethodName($class, 'ActivE'); } + + /** + * @expectedException \LogicException + * @expectedExceptionMessage Property "Property" does not have accessor method "getProperty" in class "className". + */ + public function testFindAccessorMethodName() + { + $reflectionClass = $this->createMock(\Zend\Code\Reflection\ClassReflection::class); + $reflectionClass->expects($this->atLeastOnce())->method('hasMethod')->willReturn(false); + $reflectionClass->expects($this->atLeastOnce())->method('getName')->willReturn('className'); + + $this->nameFinder->findAccessorMethodName( + $reflectionClass, + 'Property', + 'getProperty', + 'isProperty' + ); + } } -- GitLab