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

What's hot (20)

PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界
Yuuki Takezawa
 
CakePHP PHP Framework
CakePHP PHP FrameworkCakePHP PHP Framework
CakePHP PHP Framework
ryota ichie
 
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうPHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
Taiji INOUE
 
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSDrupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Tomoki Hasegawa
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
totty jp
 
Jenkins tips 20161014
Jenkins tips 20161014Jenkins tips 20161014
Jenkins tips 20161014
Hideaki Ishijima
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
Yuuki Takezawa
 
CakePHP最新情報 PHPカンファレンス関西2012
CakePHP最新情報 PHPカンファレンス関西2012CakePHP最新情報 PHPカンファレンス関西2012
CakePHP最新情報 PHPカンファレンス関西2012
ichikaway
 
Cake Php開発事例
Cake Php開発事例Cake Php開発事例
Cake Php開発事例
柴田 篤志
 
php-timecopを実戦投入してみた
php-timecopを実戦投入してみたphp-timecopを実戦投入してみた
php-timecopを実戦投入してみた
Yoshio Hanawa
 
Eggplant Functional - Lesson 9 (Japanese slides)
Eggplant Functional - Lesson 9 (Japanese slides)Eggplant Functional - Lesson 9 (Japanese slides)
Eggplant Functional - Lesson 9 (Japanese slides)
Eggplant
 
WordPressのテストとデバッグ方法
WordPressのテストとデバッグ方法WordPressのテストとデバッグ方法
WordPressのテストとデバッグ方法
Tsuyoshi.
 
Laravel5.1 Release
Laravel5.1 ReleaseLaravel5.1 Release
Laravel5.1 Release
Yuuki Takezawa
 
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作るLaravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
 
Eggplant Functional - Lesson 8 (Japanese slides)
Eggplant Functional - Lesson 8 (Japanese slides)Eggplant Functional - Lesson 8 (Japanese slides)
Eggplant Functional - Lesson 8 (Japanese slides)
Eggplant
 
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
Takashi Someda
 
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニックPHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
 
PHPエクステンションの開発tips
PHPエクステンションの開発tipsPHPエクステンションの開発tips
PHPエクステンションの開発tips
Yoshio Hanawa
 
活動報告9 laravel5入門-
活動報告9  laravel5入門-活動報告9  laravel5入門-
活動報告9 laravel5入門-
vx-pc-club
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界
Yuuki Takezawa
 
CakePHP PHP Framework
CakePHP PHP FrameworkCakePHP PHP Framework
CakePHP PHP Framework
ryota ichie
 
PHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろうPHP x AWS でスケーラブルなシステムをつくろう
PHP x AWS でスケーラブルなシステムをつくろう
Taiji INOUE
 
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSDrupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Tomoki Hasegawa
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
totty jp
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
Yuuki Takezawa
 
CakePHP最新情報 PHPカンファレンス関西2012
CakePHP最新情報 PHPカンファレンス関西2012CakePHP最新情報 PHPカンファレンス関西2012
CakePHP最新情報 PHPカンファレンス関西2012
ichikaway
 
Cake Php開発事例
Cake Php開発事例Cake Php開発事例
Cake Php開発事例
柴田 篤志
 
php-timecopを実戦投入してみた
php-timecopを実戦投入してみたphp-timecopを実戦投入してみた
php-timecopを実戦投入してみた
Yoshio Hanawa
 
Eggplant Functional - Lesson 9 (Japanese slides)
Eggplant Functional - Lesson 9 (Japanese slides)Eggplant Functional - Lesson 9 (Japanese slides)
Eggplant Functional - Lesson 9 (Japanese slides)
Eggplant
 
WordPressのテストとデバッグ方法
WordPressのテストとデバッグ方法WordPressのテストとデバッグ方法
WordPressのテストとデバッグ方法
Tsuyoshi.
 
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作るLaravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
 
Eggplant Functional - Lesson 8 (Japanese slides)
Eggplant Functional - Lesson 8 (Japanese slides)Eggplant Functional - Lesson 8 (Japanese slides)
Eggplant Functional - Lesson 8 (Japanese slides)
Eggplant
 
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
Takashi Someda
 
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニックPHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
 
PHPエクステンションの開発tips
PHPエクステンションの開発tipsPHPエクステンションの開発tips
PHPエクステンションの開発tips
Yoshio Hanawa
 
活動報告9 laravel5入門-
活動報告9  laravel5入門-活動報告9  laravel5入門-
活動報告9 laravel5入門-
vx-pc-club
 

Viewers also liked (6)

15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
 
MySQLの運用でありがちなこと
MySQLの運用でありがちなことMySQLの運用でありがちなこと
MySQLの運用でありがちなこと
Hiroaki Sano
 
8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会
Yusuke Ando
 
CakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダー
CakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダーCakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダー
CakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダー
Tomoki Hasegawa
 
Livlisのcakephp事例
Livlisのcakephp事例Livlisのcakephp事例
Livlisのcakephp事例
Masahiro Saito
 
PowerApps による初めてのアプリ開発
PowerApps による初めてのアプリ開発PowerApps による初めてのアプリ開発
PowerApps による初めてのアプリ開発
Hiroaki Oikawa
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
 
MySQLの運用でありがちなこと
MySQLの運用でありがちなことMySQLの運用でありがちなこと
MySQLの運用でありがちなこと
Hiroaki Sano
 
8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会
Yusuke Ando
 
CakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダー
CakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダーCakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダー
CakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダー
Tomoki Hasegawa
 
Livlisのcakephp事例
Livlisのcakephp事例Livlisのcakephp事例
Livlisのcakephp事例
Masahiro Saito
 
PowerApps による初めてのアプリ開発
PowerApps による初めてのアプリ開発PowerApps による初めてのアプリ開発
PowerApps による初めてのアプリ開発
Hiroaki Oikawa
 

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

CakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shellCakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shell
ichikaway
 
CakeにTestがやってきた
CakeにTestがやってきたCakeにTestがやってきた
CakeにTestがやってきた
kishida4slideshare
 
20120307 CakePHP Study in Tokyo
20120307 CakePHP Study in Tokyo20120307 CakePHP Study in Tokyo
20120307 CakePHP Study in Tokyo
ichikaway
 
Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3
Kiyotaka Oku
 
CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100
ichikaway
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
ichikaway
 
CakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shellCakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shell
ichikaway
 
20120307 CakePHP Study in Tokyo
20120307 CakePHP Study in Tokyo20120307 CakePHP Study in Tokyo
20120307 CakePHP Study in Tokyo
ichikaway
 
Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3
Kiyotaka Oku
 
CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100CakePHP 1 to 2 Migration tips 100
CakePHP 1 to 2 Migration tips 100
ichikaway
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
ichikaway
 

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