サンゴラボ

4年目ソシャゲエンジニア

FuelPHPのコントローラのテストは割と簡単?

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のパラメータをセットできたらいいんだけど、それはよくわからなかった。
なんかいい方法ないかなー?