sebastianknott / hamcrest-object-accessor
Adds a Matcher to Hamcrest which can access properties and methods of objects.
Installs: 217 657
Dependents: 3
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 1
Open Issues: 0
Requires
- php: ^8.1
- hamcrest/hamcrest-php: ^2.0
- symfony/property-access: ^4|^5|^6
Requires (Dev)
- phpunit/phpunit: ~9.5.28
- roave/security-advisories: dev-master
- sebastianknott/dev-utils: ^0.4.0
- sensiolabs/security-checker: >2
README
Hamcrest Object Accessor
This package extends the collection of matchers in Hamcrest. For general informationan about Hamcrest please visit their website. It's worth it ^^.
hasProperty
This Matcher tries to access a property of an object by name. It uses Getters, public properties, hassers and issers.
Example Class
class HasPropertyFixture { public $bla = 'blub'; private $getable = 'blub'; private $issable = true; private $hassable = true; private $notGettable = 'nope'; public function getGetable() { return $this->getable; } public function isIssable() { return $this->issable; } public function hasHassable() { return $this->hassable; } }
Matcher
$object = new hasPropertyFixture(); MatcherAssert::assertThat( $object, hasProperty( 'bla', // property name stringValue() // matcher the property value has to match ) ); MatcherAssert::assertThat( $object, hasProperty( 'Getable', stringValue() ) ); MatcherAssert::assertThat( $object, hasProperty( 'isIssable', boolValue() ) );
Installation
You may include this package by composer.
composer require --dev sebastianknott/hamcrest-object-accessor
I recommend to use this matcher in dev environments only!
Setup
Once the Package is installed you can call the matcher staticly ...
HasProperty::hasProperty('bla', stringValue()));
... or by requiring src/functions.php
provided by this package.