CakePHP1.2 SimpleTest でテストケースを作成する
CakePHP1.2 に SimpleTest をインストール で SimpleTest をインストールするところまでやったので、今度は実際にテストケースを作成してみます。
空のテストケースを作成する
app/test/cases/models に user.test.php を作成して以下のコードで保存する。
<?php class UserTest extends User { } ?>
test.php にアクセスして「App Test Cases」というリンクをクリックすると作成した user.test.php というリンクが表示されます。
この models/user.test.php をクリックすると作成したテストが実行されます。まだテストケースが何もないので当然テストは正常に終了します。
User モデルのテスト
実際にモデルのテストケースを作成してみます。
app/test/cases/models に user.test.php を以下のように修正します。
<?php App::import('Model', 'User'); class UserTest extends User { var $name = "UserTest"; var $useDbConfig = "test"; } class UserTestCase extends CakeTestCase { var $TestObject = null; function setUp() { $this->TestObject = new UserTest(); } function tearDown() { unset($this->TestObject); } function testValidate() { $data = array(); $this->TestObject->create($data); $result = $this->TestObject->validates(); $this->assertFalse($result); } } ?>
3行目の App::import でテストするモデルのクラスを読み込みます。
5行目から8行目でモデルのクラスを継承したクラスを作成して、$useDbConfig = ‘test’ としてテスト用のデータベースを使用するようにしています。
10行目で CakeTestCase を継承したクラスを作成します。クラス名は %Hoge%TestCase にします。
13行目の setUp メソッドでテストの前処理を行います。
17行目の tearDown メソッドでテストの後処理を行います。
21行目が実際のテスト内容です。テストを行うメソッドは test%Hoge% のようなメッソド名にします。
ここでは簡単なバリデーションのテストをしてみました。空の配列をバリデーション実行した場合のテストです。User モデルでは name が必須項目になっているとすると $this->TestObject->validates() は false になります。
$this->assertFalse メソッドは 引数が false ならテストは正常と判定します。
test.php にアクセスして user.test.php を再度実行すると
1/1 test cases complete: 1 passes, 0 fails and 0 exceptions.
と表示されます。
テストに失敗すると下図のように赤い帯で表示されます。またどのテストが失敗したかも表示されます。
関連する投稿
6 comments
コメントをどうぞ
Additional comments powered by BackType
uset.test.php ha user.test.php desuyone
ご指摘ありがとうございます。uset => user に修正しました
[...] CakePHP1.2 SimpleTest でテストケースを作成する ではモデルのテストケースを作成したので今度はコントローラのテストケースを作成してみました。 [...]
[...] CakePHP + SimpleTestなら http://book.cakephp.org/ja/view/160/testing http://bakery.cakephp.org/articles/view/testing-models-with-cakephp-1-2-test-suite http://my.opera.com/sizuhiko/blog/2008/06/28/cake-test http://blog.takeda-soft.jp/blog/show/186 http://www.straighten.jp/p/6 http://d.hatena.ne.jp/s-yo-ko/20080328 http://www.syuhari.jp/blog/archives/429 [...]
[...] http://book.cakephp.org/ja/view/160/testing http://bakery.cakephp.org/articles/view/testing-models-with-cakephp-1-2-test-suite http://my.opera.com/sizuhiko/blog/2008/06/28/cake-test http://blog.takeda-soft.jp/blog/show/186 http://www.straighten.jp/p/6 http://d.hatena.ne.jp/s-yo-ko/20080328 http://www.syuhari.jp/blog/archives/429 [...]
2trackback…
…