Guard + PHPUnitのインストール for Laravel 4

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

Can’t run guard:watch with Laravel Guard

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

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Guard + PHPUnitのインストール for Laravel 4の記事にコメントを投稿