PHPUnit_扩展_数据库_测试用例返回未定义的方法

PHPUnit_扩展_数据库_测试用例返回未定义的方法,php,mysql,pdo,phpunit,tdd,Php,Mysql,Pdo,Phpunit,Tdd,我遇到一个致命错误:在准备PDO语句的PHPUnit测试中,调用未定义的方法PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection::prepare()。如果默认数据库连接是成功连接的pdo对象的副本,那么它不具有访问其方法的权限吗 我的类和相关函数: class User { protected $db; public function __construct($db) { $this->db = $db; } p

我遇到一个致命错误:在准备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' );
} 

我刚刚遇到了一个类似的问题,我有一个抽象数据库testcase类。通过改变来解决它

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


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

这里也有同样的问题…Panique,在您的连接中,尝试使用套接字而不是本地主机。ie:'mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock'
public function setup()
{
  $this->db = $this->getConnection()->getConnection();
}