0

PHPUnit/DBUnit を使用して、データベースとのやり取りをテストしています。これまでのところ、私は通り抜けることができませんでしたcreatDefaultDBConnection()。データベースはすでに MySQL で作成されており、最初の PDO 接続は成功していると確信しています。createDefaultDBConnection()PDO ハンドラとスキーマ名を取ります。両方を提供しましたが、一貫してこのエラーが発生します。

PHPUnit_Extensions_Database_DefaultTester::__construct() に渡される引数 1 は、インターフェイス PHPUnit_Extensions_Database_DB_IDatabaseConnection を実装する必要があります。null を指定し、..///PHPUnit/Extensions/Database/TestCase.php の 132 行目で呼び出して定義します。

テストは次のとおりです。

require_once('../includes/file/to/include.php');

class Core extends PHPUnit_Extensions_Database_TestCase 
{
    static private $pdo = null; 

    public function getConnection() 
    {
        $pdo = new PDO("mysql:host=localhost;dbname=dbname", 'root', "root");
        $this->createDefaultDBConnection($pdo, "dbname");
    }

    ...
}

アドバイスをいただければ幸いです。

4

3 に答える 3

1

I can't comment yet as my lack of reputation. Here is the good suggestion of @bashaus, juts fixing the way static properties should be called. :)

static private $pdo;
static private $conn;

final public function getConnection()
{
    if ( is_null( self::$conn ) )
    {
        if ( is_null( self::$pdo ) )
        {
            self::$pdo = new PDO( 'mysql:host=localhost;dbname=dbname', 'root', 'root' );
        }

        self::$conn = $this->createDefaultDBConnection( self::$pdo, 'dbname' );
    }

    return self::$conn;
}
于 2015-11-12T04:54:17.557 に答える
1

ただの提案...

再利用できるように、接続を静的変数にすることを検討することをお勧めします。:)

static private $pdo;
static private $conn;

final public function getConnection()
{
    if (is_null(static::$conn))
    {
        if (is_null(static::$pdo))
        {
            static::$pdo = new PDO('mysql:host=localhost;dbname=dbname', 'root', 'root');
        }

        static::$conn = $this->createDefaultDBConnection(static::$pdo, 'dbname');
    }

    return static::$conn;
}
于 2013-10-26T17:24:54.373 に答える