This package extends the collection of matchers in Hamcrest. For general informationan about Hamcrest please visit their website. It's worth it ^^.
This Matcher tries to access a property of an object by name. It uses Getters, public properties, hassers and issers.
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;
}
}
$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()
)
);
You may include this package by composer.
composer require --dev sebastianknott/hamcrest-object-accessor
I recommend to use this matcher in dev environments only!
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.