让 PhpStorm 识别 PHPUnit 设置中定义的实例

Making PhpStorm recognise instances defined in PHPUnit setUp

考虑以下测试用例:

class FooTest extends \PHPUnit_Framework_TestCase
{
    public $foo;

    public function setUp()
    {
        $this->foo = new Foo();
    }

    public function testBar()
    {
        $expected = 42;
        $actual = $this->foo->bar();

        $this->assertEqual($expected, $actual);
    }

因为$this->foo是在setUp中实例化的,PhpStorm在后续的测试方法中不会将其识别为Foo的实例。结果,很多 IDE 功能都丢失了(丢失完成查找等)。 PhpStorm 甚至抱怨 bar 不是 $this->foo 的方法,尽管它是

是否有有效的方法让 PhpStorm 识别 setUp 中定义的实例;如果它们在 __construct 中定义,会很像吗?也许我缺少一整套 PhpStorm 功能?或者只是一个 hacky 解决方法?

PHPStorm读取标准的PHPDOC,例如你可以定义为:

class CustomerHelperTest extends \PHPUnit_Framework_TestCase{

    /**
     * @var \Acme\DemoBundle\Service\CustomerHelper
     */
    protected $customerHelper;

    protected function setUp()
    {
        $this->customerHelper = new CustomerHelper(
        );
    }