FuelPHPのコントローラのテストは割と簡単?
このリンクにもあるように、たびたび社内でもコントローラのテストは話題にあがります。
僕もどうやってテストすればいいかわかっていないのですが、とりあえずステータスコードとビューに渡してるデータだけでもチェックしてみようと思いました。
以下は適当に書いたサンプル
welcomコントローラのテスト
fuel/app/tests/controller/welcome.php
<?php /** * Tests for Controller_Welcome * * @group App */ class Test_Controller_Welcome extends TestCase { /** * ステータスコードのテスト */ public function test_index_status() { // リクエストオブジェクトを作成、HTTPメソッドも指定可能 $request = Request::forge('welcome/index')->set_method('GET'); // リクエストを実行してレスポンスオブジェクトを取得 $response = $request->execute()->response(); // ステータスコードを取得 $test = $response->status; // ステータスコードを取得 $expected = 200; $this->assertEquals($expected, $test); } /** * ビューに送るデータのテスト * データ送ってないので失敗する */ public function test_index_data() { $response = Request::forge('welcome/index')->execute()->response(); // data['test'] = 'hoge'みたいにして送ったデータを取得 $test = $response->body->test; $expected = 'hoge'; $this->assertEquals($expected, $test); } }
リクエストオブジェクトとレスポンスオブジェクトがあるので、これだけなら簡単です。
あとはリクエストオブジェクトにGETとかPOSTのパラメータをセットできたらいいんだけど、それはよくわからなかった。
なんかいい方法ないかなー?