Download the PHP package imsuperlative/phpstan-pest without Composer
On this page you can find all versions of the php package imsuperlative/phpstan-pest. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download imsuperlative/phpstan-pest
More information about imsuperlative/phpstan-pest
Files in imsuperlative/phpstan-pest
Package phpstan-pest
Short Description PHPStan extension that types $this in Pest PHP test closures
License MIT
Informations about the package phpstan-pest
phpstan-pest
PHPStan extension that provides typed $this in Pest PHP test closures.
Solves the "undefined property" errors PHPStan reports when you assign dynamic properties to $this in beforeEach and use them in your tests.
Note: This extension uses some unstable PHPStan APIs and may require updates on minor PHPStan releases.
Requirements
- PHP 8.4+
- PHPStan 2.0+
Installation
If you have phpstan/extension-installer, the extension is registered automatically. Otherwise, add it to your phpstan.neon:
Configuration
If your project extends the base TestCase (e.g. in Laravel with Testbench), point testCaseClass to your own class:
Features
Typed dynamic properties
Infers types from $this->prop = expr assignments in beforeEach using PHPStan's own type resolver:
Alternatively, declare types via @pest-property or @property PHPDoc tags.
Full documentation
Uses & trait resolution
Resolves trait methods from uses() and pest()->extend() calls, including parent Pest.php files with ->in() scoping:
Full documentation
Expectations
Higher-order method proxying, property access on expect(), union type narrowing, and custom expectations:
Full documentation
Rules
Assertion simplification
Suggests simpler Pest assertion methods when a more expressive alternative exists:
| Before | After |
|---|---|
->toBe(true) |
->toBeTrue() |
->toBe(false) |
->toBeFalse() |
->toBe(null) |
->toBeNull() |
->toBe('') / ->toBe([]) |
->toBeEmpty() |
->toHaveCount(0) |
->toBeEmpty() |
->toHaveLength(0) |
->toBeEmpty() |
Full documentation
Supported Pest functions
it, test, describe, beforeEach, afterEach (both short and Pest\ namespaced forms).
PHPStan API Compatibility
This extension relies on PHPStan APIs not covered by the backward compatibility promise. These are baselined and may require updates on minor PHPStan releases.
| API | Why |
|---|---|
WrappedExtendedPropertyReflection |
Wraps PropertyReflection into ExtendedPropertyReflection for property access on custom types |
UnresolvedPropertyPrototypeReflection |
Required by ObjectType::getUnresolvedPropertyPrototype() |
UnresolvedMethodPrototypeReflection |
Required for trait method resolution on custom types |
ExtendedMethodReflection |
Required for exposing trait methods as public |
PhpDocStringResolver::resolve() |
Parses PHPDoc blocks for @pest-property and @property tags |
License
MIT