【发布时间】:2014-11-05 22:26:35
【问题描述】:
我正在尝试模拟 PDO 对象,但收到错误消息“PDO::__construct() 需要至少 1 个参数,给定 0”
我要模拟的班级在这里:
class MockPDO extends PDO
{
public function __construct() {
try
{
$dsn = "mysql:host=localhost;dbname=somedatabase";
parent::__construct($dsn, "root", "root");
}
catch (PDOException $exception)
{
die($exception->getMessage());
}
}
}
我的测试班在这里
class DatabaseTest extends \PHPUnit_Framework_TestCase
{
public function testFindById() {
$pdo = $this->getMock('PDO', array('prepare'));
$stmt = $this->getMock('PDOStatement', array('execute', 'fetch'));
$stmt->expects($this->once())->method('execute')->with($this->equalTo(array(':id' => 2)));
$stmt->expects($this->once())->method('fetch');
$pdo->expects($this->once())->method('prepare')
->with($this->equalTo('SELECT * FROM sometable WHERE id => :id'))
->will($this->returnValue($stmt));
}
我知道这很简单,但我做错了什么?
【问题讨论】:
-
这里不能应用stackoverflow.com/questions/19904852/…的解决方案,因为我只能扩展phpunit的测试框架。
标签: php mysql unit-testing pdo phpunit