让 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(
);
}
考虑以下测试用例:
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(
);
}