Laravel 4でGuardによる継続的なテスト環境を構築する
Laravel Testing DecodedベースでGuardをインストール
Laravel4でGuardとPHPUnitを使ったテスト環境のセットアップ方法(Windows向け)です。
Laravel 4.0のインストール
Laravel Testing Decodedでは、Laravel4.0、及びその時のGuard他を使うことを前提に書かれた本なので、バージョンを指定して4.0のLaravelをインストールします。
composer create-project laravel/laravel=4.0.* laravel40 --prefer-dist
composerでPHPUnitを導入
composerでインストール
composer.jsonにphpunitを追加します。
"require": { "laravel/framework": "4.0.*", "phpunit/phpunit": "3.7.*" },
追加後、コマンドプロンプトでupdateします。
composer update
pathの設定
phpunit.batへpathを通します。今回の場合は、
C:\xampp\htdocs\vhost\laravel40\vendor\bin
上の階層を環境変数pathに追加しました。
XAMPPを利用している場合は、デフォルトで
C:\xampp\php
にpathが通っているので、こちらの階層に配置されているphpunit.batを
phpunit.bat.org
などに変更し実行されないようにしておきます。
Guardのインストール
バージョンを指定してインストール
通常通りgemを利用してインストールすると、Guardのバージョン2がインストールされますが、エラーが発生するので、1系を指定してインストールしました。
gem install guard -v 1.8.3
guard-phpunitとrb-fseventは通常通りgemでインストールします。
gem install guard-phpunit
gem install rb-fsevent
Guardfileの作成
/app 配下にGuardfileを作成します。
guard init
Guardfileに以下のコードを追記します。
guard 'phpunit', :cli => '--colors', :tests_path => 'tests' do watch(%r{^.+Test.php$}) end
Guardの起動
起動方法
guardコマンドを実行するとテストが実行され実行後はプロンプトが待機状態になります。
guard
wdmのロードエラー
テスト実行後に以下のエラーが発生する場合は、
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require':cannot load such file -- wdm LoadError)
gemでwdmをインストールします。
gem install wdm
guard-phpunitのエラー
テスト実行後にguard-phpunitのバグが発生しました。
Fatal error: Call to undefined method PHPUnit_Framework_TestResult::allCompletlyImplemented() in C:\Ruby193\lib\ruby\gems\1.9.1\gems\guard-phpunit-0.1.4\lib\guard\phpunit\formatters\PHPUnit-Progress\PHPUnit\Extensions\Progress\ResultPrinter.php on line 250
以下のパスに配置されているResultPrinter.phpを開いて
C:\Ruby193\lib\ruby\gems\1.9.1\gems\guard-phpunit-0.1.4\lib\guard\phpunit\formatters\PHPUnit-Progress\PHPUnit\Extensions\Progress\ResultPrinter.php
間違っている部分を修正します。
allCompletlyImplemented
を
allCompletelyImplemented
に置き換えることでエラーを回避することができました。
PHP Fatal error: Call to undefined method PHPUnit_Framework_TestResult::allCompletlyImplemented