sql >> データベース >  >> RDS >> Mysql

phpunitでPDOをあざける

    PDOをモックする必要はありません。仕組みの例を次に示します。

    ConnectionTest.php:

    <?php
    
    class ConnectionTest extends PHPUnit_Extensions_Database_TestCase
    {
        public function getConnection()
        {
            $database = 'myguestbook';
            $user = 'root';
            $password = '';
            $pdo = new PDO('mysql:host=localhost;dbname=myguestbook', $user, $password);
            $pdo->exec('CREATE TABLE IF NOT EXISTS guestbook (id int, content text, user text, created text)');
            return $this->createDefaultDBConnection($pdo, $database);
        }
    
        public function getDataSet()
        {
            return $this->createFlatXMLDataSet(__DIR__.'/dataSets/myFlatXmlFixture.xml');
        }
    
        public function testGetRowCount()
        {
            $this->assertEquals(2, $this->getConnection()->getRowCount('guestbook'));
        }
    }
    

    myFlatXmlFixture.xml

    <?xml version="1.0" ?>
    <dataset>
        <guestbook id="1" content="Hello buddy!" user="joe" created="2010-04-24 17:15:23" />
        <guestbook id="2" content="I like it!" user="nancy" created="2010-04-26 12:14:20" />
    </dataset>
    

    結果:

    PHPUnit 4.7.6 by Sebastian Bergmann and contributors.
    
    .
    
    Time: 215 ms, Memory: 5.25Mb
    
    OK (1 test, 1 assertion)
    

    dbに対するテストの主なポイントは、dbをモックするのではなく、本番データベースではなく、テスト用のdbに対してまったく同じPDO接続を作成することです。これは、mysql、sqliteなどです...



    1. MySQL:複数のテーブルまたは多くの列を持つ1つのテーブル?

    2. MariaDBでのDATE_ADD()のしくみ

    3. C#からOracleプロシージャに配列を渡す

    4. Laravel5でEloquentを使用してピボットテーブルを更新する方法