看了 PHPUnit 写数据库测试的文档,要先建立基境,主要是写个 setup 函数,这是我的
protected function setUp() : void
{
//获取 mysql 连接
$conn = $this->getConnection();
//建立 PDO 连接
$pdo = $conn->getConnection();
// set up tables
$fixtureDataSet = $this->getDataSet();
foreach ($fixtureDataSet->getTableNames() as $table) {
// drop table
$pdo->exec("DROP TABLE IF EXISTS `$table`;");
// recreate table
//Returns a table meta data object for the given table
$meta = $fixtureDataSet->getTableMetaData($table);
$create = "CREATE TABLE IF NOT EXISTS `$table` ";
$cols = array();
foreach ($meta->getColumns() as $col) {
$cols[] = "`$col` VARCHAR(200)";
}
$create .= '('.implode(',', $cols).');';
$pdo->exec($create);
}
parent::setUp();
}
但是这样的话,创建表的字段都是 varchar(200),而我看$meta 这个类getColumns
就是返回了一个字符串数组,字段定义信息我也不知道从哪里拿?
这是 MySQLdump 出来的 xml 文件
<?xml version="1.0"?>
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="ucenter">
<table_structure name="uc_assets_log">
<field Field="id" Type="int(10) unsigned" Null="NO" Key="PRI" Extra="auto_increment" Comment="" />
<field Field="uid" Type="int(10)" Null="NO" Key="MUL" Extra="" Comment="收入者" />
<field Field="type" Type="tinyint(1) unsigned" Null="NO" Key="" Default="1" Extra="" Comment="1:U 币,2:鲜花" />
<field Field="number" Type="decimal(10,2)" Null="NO" Key="" Extra="" Comment="收入金额" />
<field Field="charm" Type="float(10,2)" Null="NO" Key="" Default="0.00" Extra="" Comment="该收入所得魅力值" />
<field Field="dateline" Type="int(10)" Null="NO" Key="MUL" Extra="" Comment="" />
<field Field="buid" Type="int(10)" Null="NO" Key="MUL" Default="0" Extra="" Comment="消费者" />
<field Field="pay" Type="decimal(10,2)" Null="NO" Key="" Default="0.00" Extra="" Comment="消费金额" />
</table_structure>
<table_data name="uc_assets_log">
</table_data>
</database>
</mysqldump>
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.