CakePHP1.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"]));
    }
}
?>

モデルの時と同じようにテストを行うメソッドは test%Hoge% という名前にします。

testAction でコントローラのアクションを実行します。testAction の2番目の引数に array(‘return’=>’render’) を指定するとコントローラの render を実行した結果が返ります。array(‘return’=>’vars’) を指定するとビューに渡した値が全て配列で返ってきます。何も指定しないとコントローラのアクションで return で指定された値が返ります。

テストの実行はモデルと同様です。上記コードを追加すると App Test Cases に自動的に controllers/users_controller.test.php が追加されます。そのリンクをクリックすることによりテストが実行できます。

ポイントは、モデルと違いインスタンスを作成せずに testAction でテストをするというところでしょうか。

参考 URL
Cookbook :: 1.2 Collection :: マニュアル :: Common Tasks With CakePHP :: Testing

関連する投稿