CakePHP 開発&テスト環境

CakePHPを使っていくぞと意気込んで、カテゴリ追加。今日は、プロジェクトに耐えるCakePHPの開発環境を検討してました。Eclipse PDTとTest Suiteのセットアップ。と、テストケースサンプル。

Railsじゃダメだっと気づいて、CakePHPを導入することに。
なので開発環境をチェーック。

IDE選び

まずは、Zend StudioKomodo IDEを試用。ビビッたのは、Zend StudioはVisual Studioを超えてるんじゃないかと。Komodo IDEの方は、Railsも使えるので、多言語派にはタマらなく欲しい一品です。どちらもすんごくよかったのですが、今回は買うのやめました。本格PHP屋さんに昇格できたときに再検討することにして、今回はEclisep PDTを採用

PDTは、all-in-one配布のものを利用します(確実!)。Ctrl+Spaceでサクサク入力補完してくれて、設定すればデバッガも使える模様。
DB操作もEclipseからやってしまいたいので、SQL Explorerを導入しました。SQLの発行履歴や、最終的なテーブルの形をCREATE文に直してくれたりするので、Rails の Migrateと似た感じにできるかも。

あとは、Subclipseを入れて、ツールは設定終わり。
PHPの方には、phpDocumentorをpear install。

ユニットテスト環境

CakePHP1.1の場合は、別にTest Suiteが提供されています。CakePHPを解凍後に、Test Suiteのappフォルダを上書きしてインストール終わり。

で、ドキュメントがなくて四苦八苦したのですが、ブログチュートリアルのテストケースを書くとすると、

 ■app/models/post.php
 <?php
 class Post extends AppModel{
  var $name = 'Post';
 }
 ?>

のテストケースは、

 ■app/tests/app/cases/models/post.test.php
 <?php
 loadModel('post'); //←これがミソ!
 class PostTest extends UnitTestCase {
  var $Post = null;
  function setUp(){
    $this->Post = new Post(); //loadModelするとnewできる。
  }
  function testSomeone(){
    $this->assertTrue( $this->Post->findById(1) );
    $this->assertEqual(3, count( $this->Post->findAll() ) );
  }
 }
 ?>

を作ったら、http://localhost/tests/にアクセスして、「App Test Cases」に出てくるテストケースをクリックすると、テストケースが走る。
せっかくだからこれもEclipseを使うと、こんな感じになります。


CakePHP1.2のテスト環境

まだ1.2はAlpha版ですが、テストの議論はこちらのバージョンの方が活発です。というのも、1.2にはTest Suiteが同梱されていて、Rails流のfixtureも使えるので、これからは1.2を使ったほうがいいのかもしれない。

インストールは、CakePHP1.2を解凍してsimpletestをapp/vendersに突っ込めば終わり。

1.1からの変更点は、

■テストケースの置き場所は、
 app/tests/cases/models/post.test.php

■テストケースの書き方が
 class PostTest extends CakeTestCase {
   ・・・・
 }

■テストURLは、http://localhost/test.phpで、
 カッコよくなってます。



CakePHPにはテスト環境がナイもんだと思っていたら、意外にありました。でもやっぱり、マニュアル類がないんだよなぁー。
テストケースからModelをnewするだけなのに、いろいろと回り道をしてしまった。みなさまにおかれましては、二の足を踏まぬよう、お祈りいたします。

loadModelやloadControllerなどのクラスローダーがcake/basics.phpに定義されていて、テストを書くときは駆使することになるようです。


コメント
yuichi_kathaira
2007/07/01
参考になります。この前のエントリ見て、勉強会でテストチュートリアル聞いてから、テスト周りはどうなんだろうって気になってました。CakePHP、今度私も試してみようと思います。
武田ソフト
2007/07/01
止めはしませんが、必要に迫られてからで良いのかと。
機能面でRailsよりも良いところは、ありませんよ。
初心者
2007/08/03
すみませんが、ちょっと教えてください。私もCakePHP1.2と紹介いただいたEclipseを使って挑戦中ですが、拡張子thtmlをクリックするとメモ帳が開いてしまいます。これもEclipseで開くことはできますでしょうか。ご存知でしたら教えていただけませんか?
武田ソフト
2007/08/03
上のメニューから「Window」-「Preference」で、
「General」-「Content-Type」で拡張子とエディタの関連付けを設定できます。↓こちらに絵入りの解説が。
http://massat.jp/2007/01/25/132
CakePHP1.2だと、*.thtml→*.ctpに変更ですね。

コメントしてください
お名前:
入力しなければ「匿名さん」。20字以内。

メール:
入力しても表示しません

URL:
入力すればリンクが貼れます


コメント: