Posts tagged test
第3回 CakePHP 勉強会に参加しました
1第3回CakePHP勉強会 – events.php.gr.jp
今回は申し込み開始から13分で満席になったそうです。基調講演(?)であった Gwoo の「次は参加するよ」というような話もありました。
ちなみに
“gwooがヨーロッパで講演” フォーラム – CakePHP Users in Japan
Gwooは良い機会であれば日本に行くことも可能だと言っています。
という話もあるので本当に来るのかも。
で、帰ってからブログに書くまでが勉強会ということなので(寝てしまいましたが)個人的な感想を書いておきます。
(続きを読む…)
CakePHP1.2 SimpleTest の小技
0CakePHP で SimpleTest を使うときにちょっとした小技の紹介です。
<?php class UsersControllerTestCase extends CakeTestCase { function startCase() { echo '<h1>Starting Test Case</h1>'; } function endCase() { echo '<h1>Ending Test Case</h1>'; } function startTest($method) { echo '<h3>Starting method '.$method.'</h3>'; } function endTest($method) { echo '<hr/>'; } function testIndex() { $result = $this->testAction('/users/index'); debug($result); } } ?>
CakePHP1.2 SimpleTest のテストケースをまとめて実行する
1ある程度テストケースが増えてくるといちいち App Test Cases からひとつづつテストを実行するのは面倒です。そこでグループ化してまとめてテストケースを実行する方法です。
テストケースのグループ化
app/tests/groups 以下に GroupTest を継承したクラスを作成する。
GroupTest を継承したクラスのファイル名は hoge.group.php のように .group.php を付ける。
まとめる対象はディレクトリかファイルを指定できる。
(続きを読む…)
CakePHP1.2 SimpleTest でコントローラのテストケースを作成
1CakePHP1.2 SimpleTest でテストケースを作成する ではモデルのテストケースを作成したので今度はコントローラのテストケースを作成してみました。
コントローラのテストケースは app/tests/case/conrollers 以下に作成します。
app/tests/case/conrollers/user_controller.test.php
<?php class UsersControllerTestCase extends CakeTestCase { function testIndexTitle() { $result = $this->testAction('/users/index', array('return'=>'render')); $this->assertPattern("/<title>TITLE<\/title>/", $result); } function testIndexSet() { $result = $this->testAction('/users/index', array('return'=>'vars')); $this->assertTrue(isset($result["users"])); } } ?>
CakePHP1.2 SimpleTest 値を検証する assert?メソッド
2SimpleTest で使用する値を検証する assert?メソッド
assertTure
boolean assertTrue(boolean $result, [string $message])
$result が true か
(続きを読む…)
CakePHP1.2 SimpleTest でテストケースを作成する
6CakePHP1.2 に SimpleTest をインストール で SimpleTest をインストールするところまでやったので、今度は実際にテストケースを作成してみます。
空のテストケースを作成する
app/test/cases/models に user.test.php を作成して以下のコードで保存する。
<?php class UserTest extends User { } ?>
CakePHP1.2 に SimpleTest をインストール
2CakePHP1.2 では SimpleTest を使用したユニットテストが行えます。
テスト実行用スクリプトは app/webroot/test.php です。ブラウザからこのスクリプトへアクセスします。
(続きを読む…)
CakePHP1.2 バッチ処理
2CakePHP1.2 にシェル機能というのがあるのを知りました。下記エントリでメールからの処理を実際に行う方法が紹介されています。
メール受信からのシェル機能実行 – Writing Some Code
ちょうど CakePHP1.2で開発中のシステムで cron でのバッチ処理があるのでそれに応用してみたときのメモです。
バッチ処理で実行させるシェル機能を作成
今回は test という名前のシェル名にします。
app/vendors/shells/test.php を作成します。
< ?php class TestShell extends Shell { var $uses = array('Model'); function actionName(){ /* 実際の処理を書きます */ /* $this->uses に追加したモデルが使用できます */ $lists = $this->Model->findAll(); } } ?>
シェルスクリプト
下記のようなシェルスクリプトを作成して cron から実行させます。
#!/bin/sh cd /path/to/app ../cake/console/cake test actionName
シェルスクリプトなしで直接 cake を実行する方法もある
cake を実行するときにカレントディレクトリが app でないとだめなのですが、
-app /path/to/app
のように -app オプションで実行時に app のパスを指定することもできます。
その場合は下記のようになります。
/path/to/cake/console/cake test actionName -app /path/to/app
これを直接 cron から実行させればシェルスクリプトなしでも実行できます。
その他
vendors/shells 内のファイルですが、ファイル名が hoge_foo.php だった場合、クラス名は HogeFooShell ですが、実行するときは
cake/console/cake hoge_foo actionName
となるようです。