【问题标题】:PHPUnit_Extensions_Database_Testcase returns undefined methodPHPUnit_Extensions_Database_Testcase 返回未定义的方法
【发布时间】:2023-04-11 10:46:01
【问题描述】:

我收到一个致命错误:在我准备 PDO 语句的 phpunit 测试中调用未定义的方法 PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection::prepare()。如果默认的数据库连接是成功连接的 pdo 对象的副本,它就不能访问它的方法吗?

我的班级和相关功能:

class User
{ 
protected $db; 

public function __construct($db) 
{ 
$this->db = $db; 
} 

public function deleteItem($itemId)
{
$sql = "
DELETE FROM Users WHERE id = ?";
$sth = $this->db->prepare($sql);//this is the failed line works on other tests
return $sth->execute(array($itemId));
}

我的测试:

class RosterDBTest extends PHPUnit_Extensions_Database_Testcase 
{ 

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

public function getDataSet()  
{  
return $this->createFlatXMLDataset(  
dirname(__FILE__) . '/users.xml');  
}  

public function setup()
{
$this->db = $this->getConnection();
}

public function testRemoveUser()
{
$testUser = new User($this->db);
$expectedUsers = 123;
$testUser->deleteItem(91);
$totalUsers = $testUsers->getAllUsers();
$this->assertEquals( $expectedUsers,count($totalUsers), 'Did not delete User 91' );
} 

【问题讨论】:

  • 同样的问题...
  • Panique,在您的连接尝试中,使用套接字而不是 localhost。即:'mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock'

标签: php mysql pdo phpunit tdd


【解决方案1】:

我刚刚遇到了一个类似的问题,我有我的抽象数据库测试用例类。改了就解决了

public function setup()
{
  $this->db = $this->getConnection();
}

public function setup()
{
  $this->db = $this->getConnection()->getConnection();
}

不确定这是否对此有帮助,但希望能对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    相关资源
    最近更新 更多