我刚刚开始了解 PHPUnit 和模拟类。我正在尝试测试一段代码,该代码从数据库对象中获取查询对象,然后从此查询中获取数据。所以我试图模拟这些数据库对象的功能,以便它们总是返回一组已知的数据。
我的客户端代码正在运行以下行:
$result = $query->fetch(db::FETCH_ASSOC);
当我尝试运行测试时,出现以下错误:Fatal error: Undefined class constant 'FETCH_ASSOC' in...... etc
测试中创建模拟对象的代码如下:
/** dbQuery Mock Object */
$this->dbQuery = $this->getMock('dbQuery', array('execute', 'fetch' ), array(), '', false);
$this->dbQuery->expects($this->any())
->method('execute')
->will($this->returnValue(null));
$this->dbQuery->expects($this->any())
->method('fetch')
->will($this->returnValue(null));
/** db Mock Object */
$this->dbro = $this->getMock('db', array('prepare'), array(), '', false);
$this->dbro->expects($this->once())
->method('prepare')
->will($this->returnValue($this->dbQuery));
所以我的问题是,如何访问模拟的 db 对象的类常量?或者,我在宏伟的计划中究竟错过了什么?