cakePHPでテストコードを書いてみました
モデルのテスト
!テストで行うこと!
・参照して、意図した値がはいっているか?
・エラーであるべき値を入れて、きちんとエラー処理できているか?
・saveなど登録でafterfind、bforefindがちゃんと動作しているか?
- - - - - - - - - - - - - - - - - - - - - - - - - - -
・テストコードをブレイクで生成すると、testsフォルダに fixture.php が自動的に作られる
$records arrayに自分の好きなデータを入れてテストする
例)
var $records = array(
array(
'id' => 1,
'shop1' => 'Lorem ipsum dolor ',
'shop2' => 'Lorem ipsum dolor ',
'area' => '1',
'states' => '北海道',
'address1' => 'Lorem ipsum dolor sit amet',
'address2' => 'Lorem ipsum dolor sit amet',
'tel' => '000-0000-0000',
'map' => 'Lorem ipsum dolor sit amet'
),array(
'id' => 2,
'shop1' => 'Lorem ipsum dolor ',
'shop2' => 'Lorem ipsum dolor ',
'area' => '1',
'states' => '北海道',
'address1' => 'Lorem ipsum dolor sit amet',
'address2' => 'Lorem ipsum dolor sit amet',
'tel' => '000-0000-0000',
'map' => 'Lorem ipsum dolor sit amet'
)
);・コントローラーはモデルを利用しているだけなので、テストはモデルだけでいいみたいです
・本番テーブルを使わなくても、仮のテーブルを自動で生成してくれる
→testが終わったらドロップテーブルしてくれるので、本番の環境には全く影響がない。・var $fixtures = array('app.shop');
をtest.phpに記述する事で、テストで仮のテーブルが使用されます
なので、登録のテストなどを行っても、本番のテーブルを汚すことなく、テストできます
ルーティングのテスト
routes.phpをいじると、記述する順番などによって、動いたり動かなかったりすることがあります
そういうのを防ぐ、チェックするというのをテストコードでできたりします。参考サイト:http://www.1x1.jp/blog/2009/05/cakephp_routers_php_unittest.html
admin設定をしている場合には
正引きの場合は
$this->assertIdentical('admin', $params['prefix']);逆引きの場合は
'admin' => 'admin'を追加してあげるといいとおもいます
予期せぬコードを入力された場合のエラーチェック
予期せぬコードを入力された場合は下記を記述
$this->cakeError('error404');
ユーザへエラーページが表示され、アプリケーションのこれより後のあらゆる処理が停止されます
もともと、ホームページなどにはヘッダーといわれて、ソースでは見えない情報をやり取りしているそうです
その項目のhttp status codeというものでリクエスト失敗や成功などの判断を行うコード
覚えておいたほうがいいコード
200:OK
301:転送して表示した場合のコード
302:一時的に別のURLになっている場合のコード
401:認証が必要
404:not found
500:htaccessの記述間違い
503:メンテナンス中に表示firefoxのアドオンの「LIVE HTTP headers」を入れるとヘッダー情報がみれるようになる
ヘッダーにコードを持たせることは、検索エンジンなどに登録されたりとかする上でとても大切!!
http status code
http://www.studyinghttp.net/status_code#Code200Error Handling
http://book.cakephp.org/ja/view/154/Error-Handling
memo
findメモ
idが1以外のデータを取得
$this->Shop->find('all',array=>('condition'=>array('id <>' => '1')));データの数取得
$this->Shop->find('count');
今日からtwitterのアプリ作り始めたいと思います
何ができるようなモノにしようかな・・・
単語検索とか、たぶんもうあると思うけど、自分で作ってみるのが大切!!!
って思って作ります。一週間ぐらいで作れたらいいな・・