读完你的问题后,我的脑海里浮现出一些东西。
- 如果您没有实时数据库,则可能有两种可能性:
您可能有暂存数据库,或者您的应用程序没有数据库。
- 根据您关于如果我有单个数据库的第二个问题,我会说不。因为,您可以有两个连接。
例如
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => 'root',
'database' => 'foge',
'prefix' => '',
'encoding' => 'utf8mb4',
);
public $test = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => 'root',
'database' => 'test_foge',
'prefix' => '',
'encoding' => 'utf8mb4',
);
在创建fixture 时,您将主要定义两件事:如何创建表(哪些字段是表的一部分),以及最初将哪些记录填充到表中。
我想,你可以用这个来填充你的脚本。因为这是mysql命令。但是,老实说,我以前没有尝试过。
mysql -u jenkins -pcakephp_jenkins -e 'DROP DATABASE IF EXISTS test_foge; CREATE DATABASE test_foge; CREATE TABLE users; CREATE Table posts';
最后一个是你可以在运行之前填充数据,我猜你已经知道了。
class ArticleFixture extends CakeTestFixture {
public $fields = array(
'id' => array('type' => 'integer', 'key' => 'primary'),
'title' => array('type' => 'string', 'length' => 255, 'null' => false),
'body' => 'text',
'published' => array('type' => 'integer', 'default' => '0', 'null' => false),
'created' => 'datetime',
'updated' => 'datetime'
);
public function init() {
$this->records = array(
array(
'id' => 1,
'title' => 'First Article',
'body' => 'First Article Body',
'published' => '1',
'created' => date('Y-m-d H:i:s'),
'updated' => date('Y-m-d H:i:s'),
),
);
parent::init();
}
}
作为我个人的观点,在每次构建之前删除并重新创建数据库也是一个好主意。这使您免受连锁故障的影响,其中一个损坏的构建会导致其他构建失败。