脳みそスワップアウト

揮発性なもので。おもにPHPのこととか。

cakephp2でテスト用DBにインデクスが作成されない

CakeTestFixture にこう書いておけば、
本番用DBからテスト用DBにスキーマを取り込んでくれる。
要はテーブルをコピーしてくれる。

public $import = ['model' => 'ModelName'];

でも、なぜかpkey以外のindexは無視されてしまう。
コピーしてくれたテーブルにはpkey以外のindexがない。

DBはmysqlで、UNIQUE KEY の付いたカラムにランダムなIDを生成する機能を作っていて、
重複した場合は規定回数内でリトライする部分のテストをしたかったのだけども・・。

どうもコピーしてくれる部分がおかしいようなので、
schema.php の内容を使うようにしたらうまくできた。

class HogeFixture extends \Test\MyTestFixture {
  public function __construct() {
    $appSchema = new AppSchema();
    $this->fields = $appSchema->tables['tableName'];
    parent::__construct();
  }
}

cakephp-2.5.6の話。