PHP 单元测试使用 mysqldump 的 xml,表的字段信息可以用吗?

发布于 2022-09-11 15:50:02 字数 2237 浏览 20 评论 0

DbUnit

看了 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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自控 2022-09-18 15:50:02

我一般用YAML文件作为 fixtures

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文