25. Level:1 関連は自分でセットする
class PostTest extends Post {
var $useDbConfig = 'test_suite';
}
class CategoryTest extends Category {
var $useDbConfig = 'test_suite';
}
しなくても動くけど、
JOINされません
class PostTestCase extends CakeTestCase {
function setUp() {
$this->Model = new PostTest();
$this->Model->Category
= new CategoryTest();
CakePHP Conference Tokyo
26. Level:2 名前付け重要
post.test.php : 同じ名前があると
class PostTest extends Post {
var $useDbConfig = 'test_suite'; GroupTestで「既に存在
} するクラス」になり、失
敗する。
class CategoryTest extends Category {
なので、上の方はテスト
var $useDbConfig = 'test_suite';
}
ケース名+モデル名とい
う規則で、
category.test.php :
PostTestCategory
classCategoryTest とすると良い。
extends Category {
var $useDbConfig = 'test_suite';
}
CakePHP Conference Tokyo
27. Level:3 fixtureに注意
class PostFixture extends CakeTestFixture {
var $name = ‘Post';
var $import = array('model'=>‘Post');
function create() {
return false; スキーマ情報をイン
} ポートすると、テーブ
ルが自動生成されない
function drop() {
return false;
}
}
CakePHP Conference Tokyo
28. Level:4 コンポーネントは自分でセット
class LoginComponent extends Object {
var $components = array('Session');
コンポーネントのテストで、そのコンポー
ネントが別のコンポーネントを使っている
場合、初期化されないので注意
class LoginComponentTest extends CakeTestCase {
function setUp() {
$this->Controller = &new LoginTestController();
$this->Login = &new LoginComponent();
$this->Login->Session = &new SessionComponent();
CakePHP Conference Tokyo
29. Level:5 独自FormHelperは初期化が複雑
class AppFormHelper extends FormHelper {
}
class AppFormTest extends CakeTestCase {
function setUp() {
parent::setUp();
Router::reload();
$this->AppForm = new AppFormHelper();
$this->AppForm->Html =& new HtmlHelper();
$this->Controller =& new AppFormTestController();
$this->View =& new View($this->Controller);
}
CakeのFormHelperテストの初期化を拝
借しましょう。
CakePHP Conference Tokyo
30. Level:6 計算結果はassertIdentical
function test01.12300は前後の0が省略フォーマットされる() {
$this->assertIdentical('1.123',
$this->NumberUtil->formatFloat(quot;01.12300quot;));
}
function test01.12300は前後の0が省略フォーマットされる() {
$this->assertEqual('1.123',
もし結果が“1.12300”と帰ってきても、
$this->NumberUtil->formatFloat(quot;01.12300quot;));
成功してしまいます。
}
CakePHP Conference Tokyo