Update ObjectDependenciesDescription.php
Fixing error: Typed property PHPUnit\Architecture\Asserts\Dependencies\ObjectDependenciesDescription::$uses must not be accessed before initialization
@giorgiopogliani can you write an example here to reproduce this error? please
I was using pestphp/pest on a laravel project, setting up arch tests cause this error if some packages are installed.
In pestphp/pest repo they closed the issue shifting the blame on the packages, but with the chages I am proposing all my tests suite was fixed.
i am not sure the root cause of the error and why some packages installed cause this and other packages don't.
If you want to replicate the error with one of the dep I found you can with these steps:
- Install new laravel proejct
composer create-project laravel/laravel test - Install pest 3:
composer require pestphp/pest:^3 --dev -W - Install a dep I found:
composer require mateusjunges/laravel-trackable-jobs - Init pest:
vendor/bin/pest --init - Replace everything inside Unit/ExampleTest.php with for example:
arch()->preset()->php(); - Run:
vendor/bin/pest - You should see: " Typed property PHPUnit\Architecture\Asserts\Dependencies\ObjectDependenciesDescription::$uses must not be accessed before initialization"
@giorgiopogliani I try to fix it https://github.com/pestphp/pest-plugin-arch/pull/22
Fixing error: Typed property PHPUnit\Architecture\Asserts\Dependencies\ObjectDependenciesDescription::$uses must not be accessed before initialization
I had the same exact error and applying your snippet fixed the issue Thank you. Then i got similar error at abstract class ObjectDescriptionBase and following your pattern i fixed as below
public function __construct() { $this->reflectionClass = new ReflectionClass($this); $this->type = new ObjectType($this->reflectionClass->getShortName()); $this->path = $this->reflectionClass->getFileName(); $this->name = $this->reflectionClass->getName(); $this->stmts = ServiceContainer::$nodeTraverser->traverse($this->reflectionClass->getAST()); }
@momostafa , please try v3.1.0 and tell us if you still have the error?