2012-03-19 12 views
1

私たちはCodeIgniterを使用してRESTful APIを作成していますが、コントローラのテストの作成方法を決定しようとしています。コントローラはクライアントアプリケーションから何らかの入力を受け取り、1つ以上のモデルを使用してビジネスロジックを実行し、JSONを出力します。CodeIgniterコントローラのテスト

テストの目的は、主にWeb/PHP開発者ではないクライアントサイドのエンジニアがサーバーコードに触れる必要がある場合に何かを壊さないようにすることです。

CIでコントローラーアクションをテストするにはどうすればよいですか?

私は現在2つのアイデアを持っています: 1.)データベースとのセットアップを行うテスト関数/クラスを作成し、curlでコントローラを呼び出し、クライアントの動作をシミュレートします。 2.)コントローラーをテストしたり、モデルのすべてのロジックを保持したり、モデルのテストを書いたりしないでください。

どんな考えがより堅牢で使いやすくなるか? (またはその他の提案?)

+0

どこかに浮かんでいる静かなAPIライブラリーがあると思うし、閲覧して、正しい道であなたを指し示す方法を見てください。申し訳ありませんが、私はリンクにあなたを指すことはできません。 – Philip

+0

彼らはユニットテストを受けていますが、それが必要なものかどうかはわかりません。それがhttp://codeigniter.com/user_guide/libraries/unit_testing.htmlを助ける場合に備えてちょうど掲示される – Joseph

答えて

0

品質テストをしたい場合は、両方が必要です。 コードをテストする方法とエラーを処理する方法 と、クライアント自体が潜在的な問題をどのように見ているかをテストする方法です。

1

CodeIgniter's own testing library(CodeIgniter 2)の他に、use PHPUnit with CodeIgniter with FooStackも可能です。 CodeIgniter 2.xを使用しているのであれば、CodeIgniter 1.xと同じように統合するのは簡単ではありませんが、私はそれを完了したと見ています。

FooStack自体には、モデルとコントローラの両方をカバーするサンプルテストが付属しており、あなたには良い出発点を与えることができます。

JSONを返すコントローラをテストする別の方法は、Selenium IDEを使用することです。これにより、必要な入力をチェックする簡単なテストを実行して、それがどのように行われても心配することなく、期待される出力を返すことができます。 FooStackや単体テストライブラリはおそらくあなたにもっとカバレッジと自信を与えるでしょう。

0

あなたは、あなたのテスト/コントローラを介して、あなたのコントローラを検証することができ、このような

$_POST['name'] = 'testuser'; 
$this->CI->index_post(); 
$data = output(); 
# Decode Response data 
$actualArray = json_decode($data, true); 

$this->assertNotEmpty($actualArray['status'], 'Status is empty'); 

のようなあなたのテストコントローラにフォームデータを渡しても、コントローラを検証することができます。