【问题标题】:PHPUnit/DBUnit - createDefaultDBConnection() not accepting schema namePHPUnit/DBUnit - createDefaultDBConnection() 不接受模式名称
【发布时间】:2013-08-24 20:22:17
【问题描述】:

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

    ...
}

任何建议将不胜感激。

【问题讨论】:

    标签: php mysql pdo phpunit


    【解决方案1】:

    此问题已通过返回 $this->createDefaultDBConnection($pdo, "dbname") 得到修复。

    因此,

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

    菜鸟错误

    【讨论】:

      【解决方案2】:

      只是一个建议......

      您可能需要考虑将连接设为静态变量,以便可以重复使用。 :)

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

      【讨论】:

        【解决方案3】:

        由于我缺乏声誉,我还不能发表评论。这是@bashaus 的好建议,突出了静态属性的调用方式。 :)

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-05
          • 1970-01-01
          • 2018-09-17
          • 1970-01-01
          • 1970-01-01
          • 2019-08-10
          • 2012-03-18
          • 2015-03-08
          相关资源
          最近更新 更多