MicroUnit provides several assertion classes.
Each assertion method is listed below with its signature, a concise explanation, and usage examples.
Most assertion methods can be called either via an assertion chain (e.g., AssertSingle::begin($value)->equals(...)) or statically (e.g., Assert::equals($value, $expected)).
Note: Static calls are not available for AssertMock methods due to additional setup required for mock tracking.
Most assertion methods can be called statically via the Assert class.
These static methods get used under the hood by AssertSingle, AssertArray and AssertNumeric (Fluent API).
Assert::equals(mixed $expected, mixed $actual): void
Asserts that $expected == $actual.
Assert::notEquals(mixed $unexpected, mixed $actual): void
Asserts that $unexpected != $actual.
Assert::exact(mixed $expected, mixed $actual): void
Asserts that $expected === $actual.
Assert::notExact(mixed $unexpected, mixed $actual): void
Asserts that $unexpected !== $actual.
Assert::isTrue(mixed $value): void
Asserts that $value === true.
Assert::isFalse(mixed $value): void
Asserts that $value === false.
Assert::isNull(mixed $value): void
Asserts that $value === null.
Assert::notNull(mixed $value): void
Asserts that $value !== null.
Assert::isGreaterThan(int|float $value, int|float $min): void
Asserts that $value > $min.
Assert::isLessThan(int|float $value, int|float $max): void
Asserts that $value < $max.
Assert::isBetween(int | float $min, int|float $max, int|float $value, bool $inclusive = true): void
Asserts that $value is between $min and $max. Inclusive by default.
Assert::empty(array $array): void
Asserts that the array is empty.
Assert::notEmpty(array $array): void
Asserts that the array is not empty.
Assert::contains(mixed $element, array $source, bool $shouldUseStrict = true): void
Asserts that $element exists in $source. If shouldUseStrict is true it will also make sure the type of $element matches the given element in $source.
Assert::countEquals(int $expected, array|\Countable $source): void
Asserts that the array contains exactly $count elements.
Assert::hasKey(mixed $key, array $array): void
Asserts that the array has the specified key.
Assert::notHasKey(mixed $key, array $array): void
Asserts that the array does not have the specified key.
Assert::keysEqual(array $expectedKeys, array $array): void
Asserts that the keys of $array match $expectedKeys in order and value.
Assert::containsOnly(array $allowedValues, array $array): void
Asserts that all elements in $array are among $allowedValues.
Assert::instanceOf(string $expectedInstance, object $object): void
Asserts that $value is an instance of the given class or interface.
Assert::throws(callable $method, ?string $exceptionType): void
Asserts that executing $fn throws an exception of type $exceptionClass.
Note:
Static assert methods are not available forAssertMockbecause mock assertions require additional context and tracking.
No matter which fluent assertion class you are using to start the fluent assertion process you call AssertClass::begin($value) (e.g AssertSingle::begin('something')).
Defines different assertion methods for single values (bool, string, int, float, etc.).
equals(mixed $expected): selfAsserts that the value is equal to $expected (==).
Example:
AssertSingle::begin($value)->equals(42);
notEquals(mixed $unexpected): selfAsserts that the value is not equal to $unexpected (==).
Example:
AssertSingle::begin($value)->notEquals(0);
exact(mixed $expected): selfAsserts that the value is exactly equal to $expected (===).
Example:
AssertSingle::begin($value)->exact('foo');
notExact(mixed $unexpected): selfAsserts that the value is not exactly equal to $unexpected (===).
Example:
AssertSingle::begin($value)->notExact(false);
instanceOf(string $expectedInstance): selfAsserts that the value is an instance of the given class/interface.
Example:
AssertSingle::begin($object)->instanceOf(DateTime::class);
isTrue(): selfAsserts that the value is true.
Example:
AssertSingle::begin($flag)->isTrue();
isFalse(): selfAsserts that the value is false.
Example:
AssertSingle::begin($flag)->isFalse();
isNull(): selfAsserts that the value is null.
Example:
AssertSingle::begin($value)->isNull();
notNull(): selfAsserts that the value is not null.
Example:
AssertSingle::begin($value)->notNull();
Defines assertion methods for numeric values.
exact(int|float $expected): selfAsserts that the value is exactly equal to $expected (===).
Example:
AssertNumeric::begin($value)->exact(42);
notExact(int|float $unexpected): selfAsserts that the value is not exactly equal to $unexpected (===).
Example:
AssertNumeric::begin($value)->notExact(36);
isGreaterThan(int|float $min): selfAsserts that the value is greater than $min.
Example:
AssertNumeric::begin($number)->isGreaterThan(10);
isLessThan(int|float $max): selfAsserts that the value is less than $max.
Example:
AssertNumeric::begin($number)->isLessThan(100);
isBetween(int|float $min, int|float $max, bool $inclusive = true)Asserts that the value is between $min and $max.
Example:
AssertNumeric::begin($number)->isBetween(1, 10);
Defines assertion methods for arrays.
equals(array $expected): selfAsserts that the array is equal to $expected (==).
Example:
AssertArray::begin($array)->equals(['a', 'b']);
notEquals(array $unexpected): selfAsserts that the array is not equal to $unexpected (==).
Example:
AssertArray::begin($array)->notEquals([]);
exact(array $expected): selfAsserts that the array is exactly equal to $expected (===).
Example:
AssertArray::begin($array)->exact(['a' => 1, 'b' => 2]);
notExact(array $unexpected): selfAsserts that the array is not exactly equal to $unexpected (===).
Example:
AssertArray::begin($array)->notExact(['a' => 2]);
empty(): selfAsserts that the array is empty.
Example:
AssertArray::begin($array)->empty();
notEmpty(): selfAsserts that the array is not empty.
Example:
AssertArray::begin($array)->notEmpty();
contains(mixed $element, bool $shouldUseStrict = true): selfAsserts that the array contains the given element. If $shouldUseStrict is true the type is checked as well.
Example:
AssertArray::begin($array)->contains('foo');
countEquals(int $count): selfAsserts that the array has exactly $count elements.
Example:
AssertArray::begin($array)->countEquals(3);
hasKey(mixed $key): selfAsserts that the array has the specified key.
Example:
AssertArray::begin($array)->hasKey('id');
notHasKey(mixed $key): selfAsserts that the array does not have the specified key.
Example:
AssertArray::begin($array)->notHasKey('password');
keysEqual(array $expectedKeys): selfAsserts that the array’s keys are equal to $expectedKeys.
Example:
AssertArray::begin($array)->keysEqual(['id', 'name']);
containsOnly(array $allowedValues): selfAsserts that the array contains only the specified values.
Example:
AssertArray::begin($array)->containsOnly([1, 2, 3]);
Defines assertion methods for mock objects.
Note: Static calls are not available for
AssertMockmethods. UseAssertMock::begin($mock)to initiate the assertion via fluent api.
isCalledTimes(string $method, int $count): selfAsserts that the specified method was called exactly $count times.
Example:
AssertMock::begin($mock)->isCalledTimes('foo', 2);
isCalledOnce(string $method): selfAsserts that the specified method was called exactly once.
Example:
AssertMock::begin($mock)->isCalledOnce('foo');
isNotCalled(string $method): selfAsserts that the specified method was never called.
Example:
AssertMock::begin($mock)->isNotCalled('foo');
isCalledAtLeast(string $method, int $minCallCount): selfAsserts that the specified method was called at least $minCallCount times.
Example:
AssertMock::begin($mock)->isCalledAtLeast('foo', 3);
isCalledMoreThan(string $method, int $minCallCount): selfAsserts that the specified method was called more than $minCallCount times.
Example:
AssertMock::begin($mock)->isCalledMoreThan('foo', 2);
isCalledAtMost(string $method, int $maxCallCount): selfAsserts that the specified method was called at most $maxCallCount times.
Example:
AssertMock::begin($mock)->isCalledAtMost('foo', 5);
isCalledLessThan(string $method, int $maxCallCount): selfAsserts that the specified method was called less than $maxCallCount times.
Example:
AssertMock::begin($mock)->isCalledLessThan('foo', 3);
isCalledWith(string $method, array $args, bool $showActualMethodCallsOnError = true): selfAsserts that the method was called at least once with the given arguments.
If $showActualMethodCallsOnError is set to false the actual method calls along with their arguments are not going to be printed in the erorr message. This saves a bit of time when executing the test.
Example:
AssertMock::begin($mock)->isCalledWith('bar', [1, 2]);
isCalledWithOnSpecificCall(string $method, array $args, int $onCall): selfAsserts that the method was called with the given arguments on a specific call number (1-based index).
Example:
AssertMock::begin($mock)->isCalledWithOnSpecificCall('foo', ['arg'], 2);
isOnlyCalledWith(string $method, array $expectedArgs, bool $showActualMethodCallsOnError = true): selfAsserts that the method was only called with the given arguments.
If $showActualMethodCallsOnError is set to false the actual method calls along with their arguments are not going to be printed in the erorr message. This saves a bit of time when executing the test.
Example:
AssertMock::begin($mock)->isOnlyCalledWith('bar', [1, 2]);
isOnlyCalledWithMatchingArgs(string $method, callable $matcher, bool $showActualMethodCallsOnError = true): selfAsserts that the method was only called with arguments where $matcher returns true.
If $showActualMethodCallsOnError is set to false the actual method calls along with their arguments are not going to be printed in the erorr message. This saves a bit of time when executing the test.
Example:
AssertMock::begin($mock)->isOnlyCalledWithMatchingArgs('bar', function (array $args): bool {
$arg1 = $args[0];
$arg2 = $args[1];
if ($arg1 !== 'foo') {
return false;
}
if ($arg2 !== 15 || $arg2 !== 7) {
return false;
}
return true;
});
isCalledWithMatchingOnSpecificCall(string $method, callable $matcher, int $onCall): selfAsserts that the method was called with arguments where $matcher returns true on a specifc call.
Example:
AssertMock::begin($mock)->isOnlyCalledWithMatchingArgs('bar', function (array $args): bool {
$arg1 = $args[0];
$arg2 = $args[1];
if ($arg1 !== 'foo') {
return false;
}
return true;
}, 2) // -> Only relevant when method is called the second time !
isCalledOn(string $method, int $callNumber): selfChecks that the method was called at a specific point across all method calls made on the mock.
AssertMock::begin($mock)->isCalledOn('bar', 2) // 'bar' has to be the second method that get's called on the mock
checkMethod(string $method, callable $assertMethod): selfProvides a fluent way to group method assertions using a callback that receives an AssertMockMethod instance. See AssertMockMethod for details.
Example:
AssertMock::begin($mock)->checkMethod('foo', function ($assert) {
$assert->isCalledOnce()->isCalledWith(['x']);
});
Helper class for scoped assertions on a specific mock method, used via $assertMock->checkMethod(). See checkMethod description for details.
isCalledTimes(int $expectedCallCount): selfAsserts that the method was called exactly $expectedCallCount times.
isCalledOnce(): selfAsserts that the method was called exactly once.
isNotCalled(): selfAsserts that the method was never called.
isCalledAtLeast(int $minCallCount): selfAsserts that the method was called at least $minCallCount times.
isCalledMoreThan(int $minCallCount): selfAsserts that the method was called more than $minCallCount times.
isCalledAtMost(int $maxCallCount): selfAsserts that the method was called at most $maxCallCount times.
isCalledLessThan(int $maxCallCount): selfAsserts that the method was called less than $maxCallCount times.
isCalledWith(array $expectedArgs, bool $showActualMethodCallsOnError = true): selfAsserts that the method was called at least once with the given arguments.
if $showActualMethodCallsOnError is set to false the actual method calls and their arguments are not going to be printed in the error message. This saves a bit of time when executing the test.
isCalledWithOnSpecificCall(array $expectedArgs, int $onCall): selfAsserts that the method was called with the given arguments on a specific call number.
isOnlyCalledWith(array $expectedArgs, bool $showActualMethodCallsOnError = true): selfAsserts that the method was only called with the given arguments.
If $showActualMethodCallsOnError is set to false the actual method calls along with their arguments are not going to be printed in the erorr message. This saves a bit of time when executing the test.
isOnlyCalledWithMatchingArgs(callable $matcher, bool $showActualMethodCallsOnError = true): selfAsserts that the method was only called with arguments where $matcher returns true.
If $showActualMethodCallsOnError is set to false the actual method calls along with their arguments are not going to be printed in the erorr message. This saves a bit of time when executing the test.
isCalledWithMatchingOnSpecificCall(callable $matcher, int $onCall): selfAsserts that the method was called with arguments where $matcher returns true on a specifc call.
isCalledOn(string $method, int $callNumber): selfChecks that the method was called at a specific point across all method calls made on the mock.