garethellis / hamcrest-matchers
A set of custom Hamcrest matchers
Installs: 5 461
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: 8.1.* || 8.2.* || 8.3.*
- ascii-soup/hamcrest-callback-matcher: ^1.1
- hamcrest/hamcrest-php: ^2.0
Requires (Dev)
- fakerphp/faker: ^1.13
- phpunit/phpunit: ^9.5
README
A simple collection of custom Hamcrest matchers for use with hamcrest/hamcrest-php
.
Installation
Install with composer:
composer require --dev garethellis/hamcrest-matchers
Matchers
UUID matcher
Matches a valid UUID. Example usage:
<?php /** ... **/ assertThat($uuid, is(aUUID()));
To match an array of UUIDs:
<?php /** ... **/ assertThat([$uuid1, $uuid2, $uuid3], is(anArrayOfUUIDs()));
This matcher uses the callback matcher (see below) from Nils Luxton.
HTML matcher
Matches a string containing HTML. Example usage;
<?php /** ... **/ assertThat($html, containsHTML());
Valid JSON matcher
Matches a valid JSON string. Example usage:
<?php /** .. **/ assertThat($json, is(validJSON()));
Array values matcher
Match the values of an array or Traversable
instance. Note - ignores keys.
assertThat($aTraversableInstance, hasEqualValuesTo($anArray));
Callback Matcher
Callback matching is achieved thanks to Nils Luxton and his callback matcher lib (included as a composer dependency in this library). Example usage:
assertThat("hello", matchesUsing(function($value) { return $value === "hello"; }));
Creating new custom callback matchers
You can create your own custom matchers with the callback matcher by using describedAs()
to provide a better
description for the expectation.
function isSomething() { return describedAs('a custom value', new CallbackMatcher( function($value) { return $value === 'my custom value'; } ) } assertThat($foo, isSomething());