0

我正在使用 PHPUnit/DBUnit 来测试与数据库的交互。到目前为止,我一直无法通过creatDefaultDBConnection()。数据库已经在 MySQL 中创建,我相当有信心初始 PDO 连接是成功的,因为我没有收到任何错误消息来说服我。createDefaultDBConnection()接受 PDO 处理程序和模式名称。我两者都提供了,但我一直收到此错误:

传递给 PHPUnit_Extensions_Database_DefaultTester::__construct() 的参数 1 必须实现接口 PHPUnit_Extensions_Database_DB_IDatabaseConnection,给定 null,在第 132 行的 ..///PHPUnit/Extensions/Database/TestCase.php 中调用并定义

这是测试:

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

3

此问题已通过返回$this->createDefaultDBConnection($pdo, "dbname").

因此,

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

菜鸟错误

于 2013-09-03T23:49:59.440 回答
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 回答
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 回答