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.2.0 |
HEAD , 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')); } }
Utilities
TestData
Small helper to load data associated with test.
Upgrading
Please follow Upgrade Guide.
Contributing
Please use the main repository to report issues, send pull requests, or ask questions.