15

我刚刚开始学习 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显示“未找到方法”突出显示,其次,如果我尝试在这???一点上自动完成,我的选择仅限于ObjectBehaviour. 我想看到像shouldHaveType,shouldImplement和更多的东西。

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

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

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

4

1 回答 1

20

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

问题中的 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

于 2013-11-23T10:07:48.130 回答