2011年03月04日

ビヘイビアのテストケース

お願いします♪いいねとかつぶやいたりして下さい
 
携帯ライブラリもテストケース書いてるよって。
ずっと敬遠してたけど、使った方が良さそうなので
勉強してみます。

で、とりあえずビヘイビアのテスト。

情報少なすぎ。。。

今回やりたいことは、signup plugin を作りたい。
まずは、ビヘイビアのテスト。
で、まずはメールアドレスを暗号化して返すテスト。
また、フィクスチャも設定使いたいでやんす。



まず、いきなりはまったのが &$Model を忘れてたこと。
behaviorsには必須なのにね。。。

○/plugins/signup/models/behaviors/signup.php
<?php

class SignupBehavior extends ModelBehavior {
	
	/*
		メールアドレスを暗号化して返す。
	*/
	function emailCrypt(&$Model,$email)
	{
		return $email;
	}
	
}

?>


フィクスチャを設定する。
フィクスチャって言うのはデータベースをテスト中だけテキストファイルでできますよって感じ。
本番環境に移行したときもフィクスチャを設定しときゃ本番環境に影響を与えることなくテストできるのでいい。

○/plugins/signup/tests/fixtures/user_fixture.php
<?

class UserFixture extends CakeTestFixture {
  var $name = 'User';
    
  var $fields = array(
    'id' => array('type' => 'integer', 'null' => false, 'default' => NULL, 'key' => 'primary'),
	'name' => array('type' => 'string', 'null' => false, 'default' => NULL),
    'email' => array('type' => 'string', 'null' => false, 'default' => NULL),
    'pass' => array('type' => 'integer', 'null' => false, 'default' => NULL),
    'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1)),
    'tableParameters' => array('charset' => 'utf8', 'collate' => 'utf8_general_ci', 'engine' => 'MyISAM')
  );

  // データをrecordsプロパティとして書いておきます。
  var $records = array(
    array(
      'id' => 1,
	  'name' => 'たろう',
      'email' => 'tarou@hoge.jp',
      'pass' => '5738',
    ),
    array(
      'id' => 2,
	  'name' => '次郎',
      'email' => 'jirou@hoge.jp',
      'pass' => '5738',
    ),
    array(
      'id' => 3,
	  'name' => 'ヤマダ花子',
      'email' => 'hanako@hogeyamada.jp',
      'pass' => '5738',
    )
  );
}
?>





で、次にビヘイビアのテストケース。
ビヘイビアだけじゃ動かないので、Fakeモデルを作る必要がある。
○/plugins/signup/tests/cases/models/behaviors/signup.php
<?

//ダミーモデル
class FakeTestModel extends CakeTestModel
{
}

//上のダミーモデルを継承。テストしたいビヘイビアを読み込む
class Fake extends FakeTestModel
{
	var $actsAs = array('signup.Signup');
}

class FakeTestCase extends CakeTestCase {
	
	//プラグインの中のFixtureを読み込む
	var $fixtures = array('plugin.signup.user');
	
	function startTest() {
		$this->Fake =& ClassRegistry::init('Fake');
	}
	
	function endTest() {
		unset($this->Fake);
		ClassRegistry::flush();
	}
	
	//新規ユーザー登録のテスト
	function testAdd()
	{
		$res = $this->Fake->emailCrypt('hrgse@grss.jp');
		$this->assertTrue($res);
		//ちなみにここで find('all'); とかするとFixutreの情報が表示される。
	}

}
?>
?>


これでOK。
つまり、
○/plugins/signup/tests/cases/models/behaviors/signup.php

に、

・Fakeのモデルを書く。
・そのモデルにビヘイビアを設定しちゃう。
・ビヘイビアの各メソッドは &$Model を忘れないこと。



この 3つが 大切ですね。

関連するタグ: cakephp
あなたにとって有用な記事でしたか?是非ブックマークしておくことをおすすめします。
 




ライブラリを配布しちゃったり
webデザイン
Fireworks
HTMLコーディング
CSS
Dreamweaver
携帯サイト
webプログラム
PHP
正規表現
cakephp
MYSQL
javascript
webマーケティング
adwords
analytics
windows7
ショートカットキー
おすすめ情報
サイト
facebook
ライブラリ
配布
アプリ
iphone
ipad
サーバー
さくらサーバー
全ての記事を読む




トップ - 最新の記事一覧 - お問い合わせ