diff --git a/library/Mockery.php b/library/Mockery.php index 52663edea..44a5a4b8d 100644 --- a/library/Mockery.php +++ b/library/Mockery.php @@ -662,23 +662,20 @@ private static function objectToArray($object, $nesting = 3) return array('...'); } + $defaultFormatter = function ($object, $nesting) { + return array('properties' => self::extractInstancePublicProperties($object, $nesting)); + }; + $class = get_class($object); - $customFormatterClass = self::getConfiguration()->findObjectFormatter($class); + + $formatter = self::getConfiguration()->getObjectFormatter($class, $defaultFormatter); $array = array( 'class' => $class, 'identity' => '#' . md5(spl_object_hash($object)) ); - if ($customFormatterClass) { - $customFormatter = self::getConfiguration()->getObjectFormatter($customFormatterClass); - $array = array_merge($array, $customFormatter($object)); - } else { - $array = array_merge( - $array, - array('properties' => self::extractInstancePublicProperties($object, $nesting)) - ); - } + $array = array_merge($array, $formatter($object, $nesting)); return $array; } diff --git a/library/Mockery/Configuration.php b/library/Mockery/Configuration.php index 8e4c47685..e5272874a 100644 --- a/library/Mockery/Configuration.php +++ b/library/Mockery/Configuration.php @@ -224,7 +224,7 @@ public function setObjectFormatter($class, $formatterCallback) $this->_objectFormatters[$class] = $formatterCallback; } - public function findObjectFormatter($class) + public function getObjectFormatter($class, $defaultFormatter) { $parentClass = $class; do { @@ -234,14 +234,9 @@ public function findObjectFormatter($class) $classesAndInterfaces = array_merge($classes, class_implements($class)); foreach ($classesAndInterfaces as $type) { if (isset($this->_objectFormatters[$type])) { - return $type; + return $this->_objectFormatters[$type]; } } - return null; - } - - public function getObjectFormatter($class) - { - return $this->_objectFormatters[$class]; + return $defaultFormatter; } } diff --git a/tests/Mockery/WithCustomFormatterExpectationTest.php b/tests/Mockery/WithCustomFormatterExpectationTest.php index 080ca874b..13c3a37e7 100644 --- a/tests/Mockery/WithCustomFormatterExpectationTest.php +++ b/tests/Mockery/WithCustomFormatterExpectationTest.php @@ -27,8 +27,9 @@ public function setUp(): void { \Mockery::getConfiguration()->setObjectFormatter( 'ClassWithCustomFormatter', - function ($object) { + function ($object, $nesting) { return array( + "formatter" => 'ClassWithCustomFormatter', "properties" => array( "stringProperty" => $object->stringProperty ), @@ -40,8 +41,9 @@ function ($object) { ); \Mockery::getConfiguration()->setObjectFormatter( 'InterfaceWithCustomFormatter', - function ($object) { + function ($object, $nesting) { return array( + "formatter" => 'InterfaceWithCustomFormatter', "properties" => array( "stringProperty" => $object->stringProperty ), @@ -54,17 +56,24 @@ function ($object) { } /** - * @dataProvider findObjectFormatterDataProvider + * @dataProvider getObjectFormatterDataProvider */ - public function testFindObjectFormatter($object, $expected) + public function testGetObjectFormatter($object, $expected) { + $defaultFormatter = function ($class, $nesting) { + return null; + }; + + $formatter = \Mockery::getConfiguration()->getObjectFormatter(get_class($object), $defaultFormatter); + $formatted = $formatter($object, 1); + $this->assertEquals( $expected, - \Mockery::getConfiguration()->findObjectFormatter(get_class($object)) + $formatted ? $formatted['formatter'] : null ); } - public function findObjectFormatterDataProvider() + public function getObjectFormatterDataProvider() { return array( array(