cakePHP2系でのテストの処理について。
PHPでのテストといえばphpunitが有名かと思います。cakePHPでも標準でphpunitがはいっており、ユニットテストを行うことができます。
手順
composer.jsonでphpunitを読み込みます。
※最新バージョンが対応していないこともあるようなので注意が必要です。2.5.0では3.7系であれば対応しているようです。
1 |
"phpunit/phpunit": "3.7.*" |
またテスト用のデータベースが必要なので、こちらも追加しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class DATABASE_CONFIG { public $default = array( //通常のアプリのデータベース ); //テストのデータベースの情報 //こちらに実在するデータベースの情報を書いておきます。 public $test = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'test_database_name', 'prefix' => '', //'encoding' => 'utf8', ); } |
実際のテストのファイルですがapp/Test/Case直下にファイルを置きます。Controller,Model,Viewとすでにディレクトリが用意されています。
例えばSampleというModelをテストしたい場合はModel直下にSampleTestなどとおきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
App::uses('Sample', 'Model'); class SampleTest extends CakeTestCase { //setUpはすべての処理の開始に書きます。 public function setUp() { //テスト開始時に書きたい処理など } public function testBar() { //実際にモデルを呼び出すときはこちらの処理です。 $sample = new Sample(); //ここに実際の処理を書いていきます。 } } |
あとはhttp://XXXXX/test.phpにアクセスすればテスト結果の一覧が表示されます。
純粋なテストだけではなくメソッド単位でのデバッグにも使えます。自分はそのために使っています。
参考リンク
細かい文法やデータベースとの各種連携などは公式ページである下記を参考に。