Как получить автоматическое завершение кода с помощью 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
показывает выделение "метод не найден", а во-вторых, если я попытаюсь автозаполнять точку ???
, мои параметры ограничены несколькими методами в ObjectBehaviour
. Мне бы хотелось увидеть такие вещи, как shouldHaveType
, shouldImplement
и многие другие.
Я нашел этот phpspec-stubs в Github, но, похоже, только один метод определен и требует расширения класса-оболочки.
Там также есть плагин PHPStorm, но мне это не понятно, если это должно обеспечить автозаполнение, а текущая версия дает мне исключение NullPointerException в PHPStorm немедленно при входе в любой файл PHP.
Итак, все, что вы, пользователи phpspec, печатаете много, или есть другое решение?
Ответы
Ответ 1
Обновление. PhpStorm имеет встроенную поддержку PhpSpec с 2016.3. Мы можем только ожидать, что он будет улучшен с каждым новым выпуском.
Плагин PhpStorm для PhpSpec из вопроса не поддерживается, но вы можете попробовать другое решение. Начиная с 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');
}
}
Источники:
Для правильной поддержки PhpSpec в PHPStorm ваш голос здесь: https://youtrack.jetbrains.com/issue/WI-22670