SlideShare a Scribd company logo
1 of 18
Download to read offline
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

PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界Yuuki Takezawa
 
CakePHP PHP Framework
CakePHP PHP FrameworkCakePHP PHP Framework
CakePHP PHP Frameworkryota 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 CMSTomoki Hasegawa
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツールtotty jp
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDDYuuki Takezawa
 
CakePHP最新情報 PHPカンファレンス関西2012
CakePHP最新情報 PHPカンファレンス関西2012CakePHP最新情報 PHPカンファレンス関西2012
CakePHP最新情報 PHPカンファレンス関西2012ichikaway
 
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エクステンションの開発tipsYoshio Hanawa
 
活動報告9 laravel5入門-
活動報告9  laravel5入門-活動報告9  laravel5入門-
活動報告9 laravel5入門-vx-pc-club
 

What's hot (20)

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

Viewers also liked

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
 

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 )
 
MySQLの運用でありがちなこと
MySQLの運用でありがちなことMySQLの運用でありがちなこと
MySQLの運用でありがちなこと
 
8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会
 
CakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダー
CakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダーCakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダー
CakePHP事例紹介 オンラインiPhoneアプリ作成ツール アプリビルダー
 
Livlisのcakephp事例
Livlisのcakephp事例Livlisのcakephp事例
Livlisのcakephp事例
 
PowerApps による初めてのアプリ開発
PowerApps による初めてのアプリ開発PowerApps による初めてのアプリ開発
PowerApps による初めてのアプリ開発
 

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

CakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shellCakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shellichikaway
 
20120307 CakePHP Study in Tokyo
20120307 CakePHP Study in Tokyo20120307 CakePHP Study in Tokyo
20120307 CakePHP Study in Tokyoichikaway
 
Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3Kiyotaka 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 100ichikaway
 
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
 

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

CakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shellCakePHP2.0 performance, upgrade shell
CakePHP2.0 performance, upgrade shell
 
CakeにTestがやってきた
CakeにTestがやってきたCakeにTestがやってきた
CakeにTestがやってきた
 
20120307 CakePHP Study in Tokyo
20120307 CakePHP Study in Tokyo20120307 CakePHP Study in Tokyo
20120307 CakePHP Study in Tokyo
 
Osaka Venture Meetup #3
Osaka Venture Meetup #3Osaka Venture Meetup #3
Osaka Venture Meetup #3
 
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
 
実"戦"CakePHP Plugin
実"戦"CakePHP Plugin実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
 
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
 

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