我尝试为 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/