phpnomad / tests
Testing library for PHPNomad
Requires
- friendsofphp/php-cs-fixer: ^3.13
- mockery/mockery: ^1.5
- phpstan/extension-installer: ^1.2
- phpstan/phpstan: ^2.0
- phpstan/phpstan-mockery: ^2.0
- phpunit/phpunit: ^9.5 || ^11.0
This package is auto-updated.
Last update: 2026-04-14 13:02:25 UTC
README
phpnomad/tests is the shared PHPUnit base that PHPNomad packages use for their own unit tests. It provides a TestCase wired up with Mockery-PHPUnit integration and two reflection traits for reaching into protected or private state. If you're writing application code against PHPNomad, you don't need this package. If you're contributing to a PHPNomad package, its tests/ directory almost certainly already depends on it.
Installation
composer require --dev phpnomad/tests
Pull it in as a dev dependency only. It isn't meant for production code paths.
What's included
PHPNomad\Tests\TestCaseextendsPHPUnit\Framework\TestCaseand mixes inMockeryPHPUnitIntegration, so Mockery expectations are verified and containers cleaned up automatically between tests.PHPNomad\Tests\Traits\WithInaccessibleMethodsprovidescallInaccessibleMethod()for invoking protected or private methods through reflection.PHPNomad\Tests\Traits\WithInaccessiblePropertiesprovidesgetProtectedProperty(),getProtectedPropertyValue(), andsetProtectedProperty()for reading and writing protected or private properties through reflection.
Usage pattern
Each PHPNomad package defines its own package-local TestCase that extends the shared one. That gives the package its own namespace root under Tests/ while inheriting the PHPUnit and Mockery plumbing.
<?php namespace MyPackage\Tests; use PHPNomad\Tests\TestCase as PHPNomadTestCase; class TestCase extends PHPNomadTestCase { }
Concrete unit tests then extend the package-local TestCase and mix in whichever traits they need.
<?php namespace MyPackage\Tests\Unit; use MyPackage\Services\WidgetBuilder; use MyPackage\Tests\TestCase; use PHPNomad\Tests\Traits\WithInaccessibleMethods; class WidgetBuilderTest extends TestCase { use WithInaccessibleMethods; public function testNormalizeHandlesEmptyInput(): void { $builder = new WidgetBuilder(); $result = $this->callInaccessibleMethod($builder, 'normalize', ''); $this->assertSame('', $result); } }
Documentation
Framework-wide documentation lives at phpnomad.com.
License
MIT. See LICENSE.txt.