読者です 読者をやめる 読者になる 読者になる

はむはむエンジニアぶろぐ

このブログのコンセプトは"ハッキングの為なら愛する家族を傷つけることをいとわない" 自分にとってエンジニアリングは "手段ではなく生きる目的" である

Vim autocmdとユーザ定義コマンド使ってPHPUnitのテストを楽にする

Vim PHPUnit

f:id:secret_hamuhamu:20150404130933p:plain
Vimにはautocmdというイベントをトリガーにして、処理を実行するコマンドと ユーザ定義コマンドというユーザの任意のタイミングで処理を実行するコマンドがあります。
これらのコマンドを使ってPHPUnitのテストを楽にしてみる。定型文を自動化しようというものである。

環境構成

定型文を自動化する

まず、 ~/.vim/template/php/PhpUnitTest.php というファイルを作成し以下のコードを書く。

<?php

class Test extends PHPUnit_Framework_TestCase
{
    public function setUp()
    {

    }

    public function tearDown()
    {

    }

    public function dp_テスト()
    {
        return [
            [true, true]
        ];
    }

    /**
     * @test
     * @dataProvider dp_テスト
     */
    public function テスト($hoge, $expected)
    {
        $this->assertSame($expected, $hoge);
    }
}


先ほどのコードを定型文として使いまわしたい。
いつ?PHPUnitのテストを作成する時ですね。
.vimrcに以下のコードを書く。

augroup Template_PHPUnit
    autocmd!
    autocmd BufNewFile *Test.php 0read $HOME/.vim/template/php/PhpUnitTest.php
augroup END

~Test.phpが作成された時に、PHPUnitの定型文を読み込む。
ためしに、HogeTest.phpを作成してみよう。
定型文が読み込まれているはずである。


新規ファイル作成というのをトリガーにしてイベントを実行した。
もちろん、ファイルを書き込んだタイミングで何か処理を実行することも出来る。
例えば、ファイル更新したらコンパイルさせるとかね。


定型文を任意のタイミングで呼びだす

お次は、任意のタイミングで処理を実行したい。
~/.vim/template/php/PhpUnitTestCase.php を作成し、以下のコードを書く。


    /**
     * @test
     * @dataProvider dp_テスト
     */
    public function テスト($hoge, $expected)
    {
        $this->assertSame($expected, $hoge);
    }

~/.vim/template/php/PhpUnitTestDataProvider.php を作成し、以下のコードを書く。


    public function dp_テスト()
    {
        return [
            [true, true]
        ];
    }

そして、.vimrcに以下のコードを書く。

command! PHPUnitTestCase :r $HOME/.vim/template/php/PhpUnitTestCase.php
command! PHPUnitDp       :r $HOME/.vim/template/php/PhpUnitTestDataProvider.php

ユーザ定義コマンドといいコマンドラインモードで使用できるようになる。
:PHPUnitTestCase:PHPUnitDp で先ほどの定型文を呼び出すことが出来る。

最近読んだ本

実践Vim 思考のスピードで編集しよう!

実践Vim 思考のスピードで編集しよう!

Vimテクニックバイブル ?作業効率をカイゼンする150の技

Vimテクニックバイブル ?作業効率をカイゼンする150の技

Vim script テクニックバイブル ~Vim使いの魔法の杖

Vim script テクニックバイブル ~Vim使いの魔法の杖

いきなりはじめるPHP~ワクワク・ドキドキの入門教室~

いきなりはじめるPHP~ワクワク・ドキドキの入門教室~

Laravelエキスパート養成読本[モダンな開発を実現するPHPフレームワーク!] (Software Design plus)

Laravelエキスパート養成読本[モダンな開発を実現するPHPフレームワーク!] (Software Design plus)