lastdragon-ru / phpunit-extensions
Various useful assertions/extensions for PHPUnit.
Installs: 0
Dependents: 14
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
pkg:composer/lastdragon-ru/phpunit-extensions
Requires
- php: ^8.3|^8.4
- ext-mbstring: *
- composer/semver: ^3.2
- lastdragon-ru/path: 10.0.0
- phpunit/phpunit: ^11.2.0|^12.0.0
- sebastian/comparator: ^6.0.0|^7.0.0
- sebastian/exporter: ^6.0.0|^7.0.0
Requires (Dev)
- mockery/mockery: ^1.6.6
- symfony/polyfill-php84: ^1.31
Suggests
- lastdragon-ru/phpunit-graphql: PHPUnit assertions for GraphQL to check printed/exported type/queries.
README
Various useful assertions/extensions for PHPUnit.
Requirements
| Requirement | Constraint | Supported by |
|---|---|---|
| PHP | ^8.4 |
HEAD , 10.0.0 |
^8.3 |
HEAD , 10.0.0 |
|
| PHPUnit | ^12.0.0 |
HEAD , 10.0.0 |
^11.3.0 |
HEAD |
|
^11.2.0 |
10.0.0 |
Installation
Note
The package intended to use in dev.
composer require --dev lastdragon-ru/phpunit-extensions
Extensions
Strict Scalar Compare
By default, PHPUnit compares scalars via == operator, so Assert::assertEquals(1, true) will pass. The extension adds own Comparator to compare scalars via === operator.
To register extension update your phpunit.xml:
<?xml version="1.0" encoding="UTF-8"?> <phpunit> <!-- ... --> <extensions> <bootstrap class="\LastDragon_ru\PhpUnit\Extensions\StrictScalarCompare\Extension"/> </extensions> <!-- ... --> </phpunit>
Test Requirements
PHPUnit provides several attributes like \PHPUnit\Framework\Attributes\RequiresPhp that allow skip the test if the condition doesn't meet. But there is no way to check if the specific composer package is installed or not. The extension fills this gap.
To register extension update your phpunit.xml:
<?xml version="1.0" encoding="UTF-8"?> <phpunit> <!-- ... --> <extensions> <bootstrap class="\LastDragon_ru\PhpUnit\Extensions\Requirements\Extension"/> </extensions> <!-- ... --> </phpunit>
<?php declare(strict_types = 1); namespace LastDragon_ru\PhpUnit\Docs\Examples; use Composer\InstalledVersions; use LastDragon_ru\PhpUnit\Extensions\Requirements\Attributes\RequiresPackage; use PHPUnit\Framework\TestCase; /** * @internal */ #[RequiresPackage('phpunit/phpunit')] final class RequirementsExtensionTest extends TestCase { #[RequiresPackage('phpunit/phpunit', '>=10.0.0')] public function testSomething(): void { self::assertTrue(InstalledVersions::isInstalled('phpunit/phpunit')); } }
Assertions
Note
You can include all available assertions via use \LastDragon_ru\PhpUnit\Assertions or only needed via individual traits like \LastDragon_ru\PhpUnit\Filesystem\Assertions.
\LastDragon_ru\PhpUnit\Filesystem\Assertions::assertDirectoryEquals()- Asserts that Directory equals Directory.\LastDragon_ru\PhpUnit\Filesystem\Assertions::assertDirectoryEmpty()- Asserts that Directory empty.
Constraints
DirectoryEquals
Compares two directories. By default, directories are equal if the list of
their children is the same, and files have the same content. Permissions are
ignored. You can override \self::properties() and \self::equal()
to customize comparison logic.
Utilities
TestData
Small helper to load data associated with test.
TempFile
Creates a temporary file in the system temp directory. The file will be removed after the instance removal.
TempDirectory
Creates a temporary directory in the system temp directory. The directory will be removed after the instance removal.
Upgrading
Please follow Upgrade Guide.
Contributing
Please use the main repository to report issues, send pull requests, or ask questions.