SlideShare a Scribd company logo
CakePHP(例えば2系)の
       テスト
   genesix くまがいのぶお
     monmonといいます
CakePHPとは


● PHP

● inspired by Ruby on Rails

● コマンドラインで「cake」すると色々できる

● 現在のstableは2.1.1
lib/Cake/Console/cake
● cake bakeでMやCやVなんかを生成

● cake testでテスト実行(2.0だとtestsuite)

● その他詳しくはcake --help
Testしよう

● 書き方がわからなくなったらCakePHPのテストを
  見たらいい
  ○ lib/Cake/Test/Case
1系と2系の違い

● 1系
  ○ SimpleTest
● 2系
  ○ PHPUnit



「なぜPHPUnitに移行したか」は以下参照
●   http://mark-story.com/posts/view/cakephp-and-phpunit
●   http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=2331&forum=3
僕がやっている流れ

1. 「create table」でテーブル作成
2. 「cake bake」でテーブル用のModelを作成
3. ロジックのクラスとそれをテストするファイルを手
   動作成
4. Test Test Test
   ○ もうここで大部分のテストは終わらせたい
5. 「cake bake」でControllerを作成
6. Test Test Test

Modelの話は他の人が発表しそうだからController
の話
bakeでControllerのテストファイルを自動
生成

● テストファイルの中に作られるクラス
 a. Controllerを継承したTestControllerクラス
 b. TestControllerを使ったTestクラス




view(テンプレート)に渡す変数は決まっているけ
ども、viewができてない場合とかに、とりあえずサ
サッと作れる
a. TestControllerクラス




● autoRender = falseでviewを使わないように
● redirectをOverrideでredirectをしないように
b. ControllerのTestクラス




● /monmon/indexにリクエスト
● viewに渡す変数が正しいか確認
Test実行

cake test app Controller/MonmonController




● expectedとactualの違い
● 行番号
Testが通るController




outputという変数にmonmonを入れる
Test実行




成功
ControllerのTestクラス(redirect)




● bashiruraにリクエスト
● /にリダイレクトされているか確認
Testが通るController




redirectメソッドに/を入れる
じゃあ実際のviewとかsessionの確認は?

● ControllerTestCaseクラスに
 testActionメソッドがあるのでそれを使
 う
testActionを使ったControllerのテスト




● Sessionを使ったテストはブラウザでtest.php
  ○ これ、コマンドラインからどうやるかはわからない
まとめ
http://book.cakephp.org/2.0/en/development/testing.html

久しぶりにココ見てみたら、すごく充実

していて

Testing Controllers
という所に全部書いてあった
mockの話とかも書いてある
まとめ




フレームワーク使う時はマニュアルとかreadmeとか
ちゃんと読みましょう

More Related Content

CakePHP(例えば2系)のテスト