Haehnchen / idea-php-phpunit-plugin

IntelliJ IDEA / PhpStorm PHPUnit Enhancement Plugin
MIT License
55 stars 11 forks source link

Autocomplete does not work for indirectly created MockObjects - how to aid class detection in plugin? #72

Open tlamy opened 2 years ago

tlamy commented 2 years ago

We use a custom DIC in our projects, and also provide an abstract PHPUnit TestCase that automatically mocks constructor dependencies for units under test. To access these auto mocks we provide something like

    /**
     * @param class-string $className
     * @return MockObject
     */
    protected function getMockFromContainer(string $className): MockObject
    {}

but method autocomplete does not work, obviously because the plugin does not know which class is mocked.

For the plugin's business, getMockFromContainer($className) should behave like createMock($className). Is there a way to configure such aliases?

InvisibleSmiley commented 2 years ago

Try this (with a recent version of PhpStorm):

    /**
     * @template T
     * @param class-string<T> $className
     * @return MockObject&T
     */
    protected function getMockFromContainer(string $className): MockObject
    {}