PHPUnit / DBUnit - createDefaultDBConnection()不接受模式名称

时间:2013-08-24 20:22:18

标签: php mysql pdo phpunit

我正在使用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");
    }

    ...
}

非常感谢任何建议。

3 个答案:

答案 0 :(得分:2)

通过返回$this->createDefaultDBConnection($pdo, "dbname")修正了此问题。

因此,

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

Noob错误

答案 1 :(得分: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;
}

答案 2 :(得分:1)

由于我缺乏声誉,我无法发表评论。这是@bashaus的好建议,juts修复了应该调用静态属性的方式。 :)

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;
}