Edited at

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

More than 1 year has passed since last update.


イライラ

素の 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 を書くだけでオレオレフレームワークのマジカルな部分に、独自の補完サポートを付けられるかもですよ。