【问题标题】:PHPUnit Database Testing. Fixtures not set?PHPUnit 数据库测试。没有设置夹具?
【发布时间】:2011-07-13 06:58:24
【问题描述】:

这篇文章于 7 月 17 日下午 1:35 UTC+8 更新

我有类似的东西

require_once 'PHPUnit/Extensions/Database/TestCase.php';

class TestTest extends PHPUnit_Extensions_Database_TestCase {
    public function getConnection() {
        $pdo = new \PDO('mysql:host=localhost;dbname=jm_test', 'root', 'jm123');
        return $this->createDefaultDBConnection($pdo, 'jm_test');
    }   

    public function getDataSet() {
        return $this->createXMLDataSet(TEST_DIR . '/Fixtures/test.xml');
    }

    public function testRowCount() {
        $this->assertGreaterThan(0, $this->getConnection()->getRowCount('test'));
    }
}

夹具 (test.xml)

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <table name="test">
        <column>id</column>
        <column>key</column>
        <column>value</column>
    </table>
    <row>
        <value>1</value>
        <value>Key 1</value>
        <value>Value 1</value>
    </row>
    ...
</dataset>

我的行数总是 0,这是为什么?

【问题讨论】:

  • 但是你不使用你的存根数据库,你仍然在使用真正的数据库,我猜那个数据库中没有这样的表。
  • @OZ_ 那里有桌子(否则我应该得到错误?)。如何使用我的存根数据库?我是 PHPUnit 的新手
  • 好吧,也许你需要在测试方法中使用$this-&gt;getConnection() 而不是new PDO
  • 我试过 $this-&gt;getConnection()-&gt;getRowCount('test') 得到 0 ...
  • @hakre,我发现我的错误了! ...我应该在表格元素中有行

标签: php mysql unit-testing phpunit database-testing


【解决方案1】:

我发现我的错误:我应该将 &lt;row&gt; 元素移到 &lt;table&gt; 元素中

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <table name="test">
        <column>id</column>
        <column>key</column>
        <column>value</column>
        <row>
            <value>1</value>
            <value>Key 1</value>
            <value>Value 1</value>
        </row>
        ...
    </table>
</dataset>

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 2011-05-08
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    相关资源
    最近更新 更多