ずっと敬遠してたけど、使った方が良さそうなので
勉強してみます。
で、とりあえずビヘイビアのテスト。
情報少なすぎ。。。
今回やりたいことは、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('h@okws.jp');
$this->assertTrue($res);
//ちなみにここで find('all'); とかするとFixutreの情報が表示される。
}
}
?>
?>
これでOK。
つまり、
○/plugins/signup/tests/cases/models/behaviors/signup.php
に、
・Fakeのモデルを書く。
・そのモデルにビヘイビアを設定しちゃう。
・ビヘイビアの各メソッドは &$Model を忘れないこと。
この 3つが 大切ですね。



