我尝试为 CakePHP 项目创建单元测试。创建夹具和一些测试后,我遇到了问题:



我知道 CakePHP 不支持枚举,但我无法更改数据类型。是否有任何解决方法可以使单元测试与枚举一起运行?

最佳答案

我遇到了同样的问题。为了解决这个问题,我创建了一个扩展 CakeTestFixture 类并覆盖表的创建以将所有枚举字段重新映射到字符串的子类。

<?php

class MyTestFixture extends CakeTestFixture {

  /**
   * Maps enum fields in the database to strings with a length of 64
   */
  function create(&$db) {
    foreach($this->fields as $name => &$field) {
      if( strstr($field['type'], "enum") !== false ) {
        $field['type'] = 'string';
        $field['length'] = 64;
      }
    }
    parent::create($db);
  }
}

要使用它,只需在您的装置中扩展这个类,而不是 CakeTestFixture。
<?php

App::uses('MyTestFixture', 'WhereverYouPutIt');

class MyTableFixture extends MyTestFixture {
    public $import = array('model' => 'MyTable');
}

关于unit-testing - 使用枚举进行 CakePHP 测试的解决方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23303048/

10-16 19:15