我刚刚开始学习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}中的少数方法}。我希望看到ObjectBehaviour
,shouldHaveType
等内容。
我在Github上找到了这个phpspec-stubs存储库,但它似乎只定义了一个方法,并且需要扩展一个包装类。
还有一个PHPStorm plugin但是我不清楚这是否应该提供自动完成,当前版本在输入任何PHP文件时立即在PHPStorm中给我一个NullPointerException。
那么,你们所有的phpspec用户都打字很多,还是有另一种解决方案?
答案 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