2013-08-24 18 views
0

我使用的PHPUnit/DBUnit的測試與數據庫的交互工作。到目前爲止,我已經無法讓過去creatDefaultDBConnection()。該數據庫已經在MySQL被創建,我相當有信心的初始PDO連接成功,因爲我還沒有收到任何錯誤消息否則說服我。 createDefaultDBConnection()採用PDO處理程序和模式名稱。我已經提供了兩個,但我一直得到這個錯誤:的PHPUnit/DBUnit的 - createDefaultDBConnection()不接受架構名稱

Argument 1 passed to PHPUnit_Extensions_Database_DefaultTester::__construct() must implement interface PHPUnit_Extensions_Database_DB_IDatabaseConnection, null given, called in ..///PHPUnit/Extensions/Database/TestCase.php on line 132 and defined

下面是測試:

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

    ... 
} 

任何意見將不勝感激。

回答

2

這個問題是固定通過返回$this->createDefaultDBConnection($pdo, "dbname")

因此,

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

菜鳥錯誤

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