我正在使用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");
}
...
}
非常感谢任何建议。
答案 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;
}