CakePHP1.2RC1のユニットテスト法
先日、CakePHP1.2RC1がリリースされまた一歩正式版のリリースが近づきました。
日本語フォーラムでバグらしき挙動の投稿があったので公式のバグレポートに投稿してみたところ、「そのパターンはユニットテストでカバーしてるよ」との回答。
どうやら開発チームはユニットテストベースでバグ修正をしているようなので、ユニットテストを動かしてみることにしました。
でもCakePHPだけあって手順は簡単です。
1. test.phpをブラウザで開く
CakePHP1.2RC1の配布物にはテスト環境とテストケースが組み込まれており、 app/webroot/test.php にアクセスする事でテストスイートが実行できます。
最初に表示されている所によるとSimpleTestがインストールされていないので入手が必要という事でリンクが出ています。
2. SimpleTestをダウンロード
表示されているリンクからSimpleTestのサイトにアクセスしてファイルを入手。
展開したファイルをディレクトリごとvendor配下に配置します。
再度、test.phpにアクセスすると実行するテストを選択できるメニュー画面が表示されます。
今回はテストを実行する為にTestCasesを選択します。
次に実行可能なテストケースの一覧が表示されます。ここではCakePHP本体のテストケース郡が表示をされています。
もちろんルールに従ってテストケースを追加すればここに任意のテストケースを加える事も可能と思われます。
今回はデータベースのテストを実行する為にModelを選択します。
テストが実行され、結果が表示されます。データベースを使用したテストを行う為、database.phpにデータベースの接続設定が無いとエラーとなるので、設定を行っておきます。
接続先は何も無い空のデータベースでも問題ありませんでした。なおテストケースが膨大な為、テストの実行には1分以上かかり、クエリログを見ると実行されたSQL文は200を超えていたようです。
この環境さえ出来ればあとは cake/tests/cases 配下にあるテストケースに手を加えて挙動の確認が可能です。
CakePHPのバグらしき挙動を見つけた場合はこの環境でテストして報告すると速やかに修正される可能性が高いと思います。ということで、CakePHP1.2RCを試している方はユニットテスト環境も作ってみるとよいかと思います。