#cakephp@irc.codecheck.inでいろいろ話した内容まとめ。
Version
CakePHP 1.2.3.8166
PostgreSQL 8.3
CakePHP Test Suite 1.2.0.0
What I did:
- database.phpから$testのテスト用テーブル設定をコメントアウト
- 自動でtest_suite_のprefixをつけたテスト用テーブルを本番DBに作成してくれる
- 全てのFixtureクラスで$importプロパティを設定して本番のテーブル構成を取得
- usersテーブルがあった場合のFixtureの例
<?php /* SVN FILE: $Id$ */ /* User Fixture generated on: 2009-07-14 21:07:05 : 1247572805*/ class UserFixture extends CakeTestFixture { var $name = 'User'; var $import = array('model' => 'User'); var $records = array(array( 'id' => 1, 'name' => 'k1LoW', 'username' => 'k1low', 'password' => 'hoge', 'mail' => 'k1low@101000lab.org', 'created' => '2009-07-14 21:00:05', 'modified' => '2009-07-14 21:00:05' )); } ?>
What I expected to happen:
bakeで作成したレベルのテストケースが通常通り通ると思った。
- CREATE TABLEでtest_suite_usersが作成される
- テストケースが走る
- DROP TABLEでtest_suite_usersが削除される
Why it didn't meet my expectations:
なぜか最初にDROP TABLEが走ってしまいエラーを返す。
Possible Fix:
cake/tests/lib/cake_test_case.phpのstart()の条件判定が問題だと判断し、一応PostgreSQL用の対処をしてみた。
再度追記
CakePHP1.2.4.8284でFixされた
https://trac.cakephp.org/wiki/changelog/1.2.x.x/8284