【发布时间】: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'