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



我刚刚开始学习phpspec,以期取代PHPUnit。不幸的是,我相当迷上了使用 PHPStorm 编辑器的代码完成功能,这使得即使是 PHPUnit 冗长的模拟界面也非常快速地键入。

phpspec没有这样的运气。给定这样的类:

<?php
namespace specMyVendorMyClass;
use PhpSpecObjectBehavior;
class MyClassSpec extends ObjectBehavior
{
    function it_is_initializable()
    {
        $this->shouldHaveType('MyVendorMyClass');
    }
    function it_should_do_something()
    {
        $this->???
    }
}

首先,shouldHaveType显示"找不到方法"突出显示,其次,如果我尝试在???点自动完成,我的选择仅限于ObjectBehaviour中的几种方法。我想看到像shouldHaveTypeshouldImplement等等的东西。

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

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

那么,你们所有的phpspec用户都打了很多字,还是有其他解决方案?

更新:自 2016.3 以来,PhpStorm 内置了对 PhpSpec 的支持。我们只能期望它在每个新版本中都会得到改进。

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

<?php
namespace specMyVendor;
use MyVendorMyClass;
use PhpSpecObjectBehavior;
/**
 * @mixin MyClass
 */
class MyClassSpec extends ObjectBehavior
{
    function it_is_initializable()
    {
        $this->shouldHaveType('MyVendorMyClass');
    }
    function it_should_do_something()
    {
        $this->doSomething(':D');
    }
}

来源:

  • http://blog.jetbrains.com/phpstorm/2013/11/phpstorm-7-1-eap-133-51/
  • http://youtrack.jetbrains.com/issue/WI-1730#

对于PHPStorm中正确的PhpSpec支持,请在此处投票: https://youtrack.jetbrains.com/issue/WI-22670

相关内容

  • 没有找到相关文章

最新更新