如何使用phpspec获取代码自动完成功能

时间:2013-11-17 10:59:17

标签: php phpstorm phpspec

我刚刚开始学习phpspec以取代PHPUnit。不幸的是,我更喜欢使用PHPStorm编辑器的代码完成功能,这使得即使是PHPUnit的详细模拟界面也可以很快输入。

phpspec没有这样的运气。鉴于这样的课程:

<?php

namespace spec\MyVendor\MyClass;

use PhpSpec\ObjectBehavior;

class MyClassSpec extends ObjectBehavior
{
    function it_is_initializable()
    {
        $this->shouldHaveType('MyVendor\MyClass');
    }

    function it_should_do_something()
    {
        $this->???
    }
}

首先,shouldHaveType显示'找不到方法'突出显示,其次,如果我尝试在???点自动完成,我的选项仅限于{{1}中的少数方法}。我希望看到ObjectBehaviourshouldHaveType等内容。

我在Github上找到了这个phpspec-stubs存储库,但它似乎只定义了一个方法,并且需要扩展一个包装类。

还有一个PHPStorm plugin但是我不清楚这是否应该提供自动完成,当前版本在输入任何PHP文件时立即在PHPStorm中给我一个NullPointerException。

那么,你们所有的phpspec用户都打字很多,还是有另一种解决方案?

1 个答案:

答案 0 :(得分:20)

更新:PhpStorm内置支持PhpSpec since 2016.3。我们只能期望每个新版本都会改​​进它。

问题的PhpSpec的PhpStorm插件并没有真正维护,但您可以尝试其他解决方案。从PhpStorm 7开始,可以使用@mixin注释:

<?php

namespace spec\MyVendor;

use MyVendor\MyClass;
use PhpSpec\ObjectBehavior;

/**
 * @mixin MyClass
 */
class MyClassSpec extends ObjectBehavior
{
    function it_is_initializable()
    {
        $this->shouldHaveType('MyVendor\MyClass');
    }

    function it_should_do_something()
    {
        $this->doSomething(':D');
    }
}

来源:

为了在PHPStorm中获得正确的PhpSpec支持,请在此投票https://youtrack.jetbrains.com/issue/WI-22670