LoginSignup
26
23

More than 5 years have passed since last update.

PHP Toolboxプラグインを使ってPhpStormでモッキングを快適に

Last updated at Posted at 2017-05-24

イライラ

素の PhpStorm でイラっとくる箇所といえばダントツ、PHPUnit のモックあたりですよね。こう書かないといけないの。

$connector = new SomeMiddlewareProcess();

/** @var MiddlewareInterface|\PHPUnit_Framework_MockObject_MockObject $processor */
$processor = $this->createMock(MiddlewareInterface::class);
$connector->setProcessor($processor);

setProcessor の引数定義に MiddlewareInterface のタイプヒント付いてて、docコメントがないと MockObject 型だぜ間違ってるYo! って警告にされちゃうやつ。

最近だと assert(... instanceof ...) でもOKになってますが、これもなぁ... 他人に与えられた値でもないのにアサーションってどうよっていう。

$processor = $this->createMock(MiddlewareInterface::class);
assert($processor instanceof MiddlewareInterface);
$connector->setProcessor($processor);

なんか負けた気がするやつがこれ。テストコードが、それに対応する自動テストなしに高級化していく、という闇の前兆を感じます。

/**
 * @return MiddlewareInterface
 */
private function createMiddlewareInterfaceMock()
{
    return $this->createMock(MiddlewareInterface::class)
    // ->method(...)->will...
    ;
}

スッキリ

PHP Toolbox を導入します。

スクリーンショット 2017-05-24 17.31.57.png

設定を確認します。

スクリーンショット 2017-05-24 17.00.33.png

Open で設定保存場所を開きます。

idea-php-toolbox-json-files をここにダウンロード。

~/Library/Preferences/PhpStorm2017.1$ git clone \
git@github.com:Haehnchen/idea-php-toolbox-json-files.git \
php-toolbox/vendor/php-toolbox

vendor/php-toolbox に入れたのは、他の提供者がいたときと、自分が手でカスタマイズしたいときのため。

~/Library/Preferences/PhpStorm2017.1
└── php-toolbox
    └── vendor
        └── php-toolbox
            ├── behat
            ├── core
            ├── doctrine
            ├── http
            ├── mockery
            ├── php-http
            ├── phpunit  <--- これのおかげ
            ├── psr
            ├── symfony
            ├── twig
            └── zend

やっぽい!

スクリーンショット 2017-05-24 17.58.27.png

createMock() の戻り値が勝手に、型指定 doc コメント付けたみたいになりました。

他にもいろいろおまけ付き!

スクリーンショット 2017-05-24 18.10.19.png

がんばったら JSON を書くだけでオレオレフレームワークのマジカルな部分に、独自の補完サポートを付けられるかもですよ。

26
23
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
23