我刚刚开始了解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对象的类常量?或者,我在宏观计划中究竟错过了什么?
答案 0 :(得分:1)
getMock
可以根据不存在的类创建对象。在这种情况下,它将创建两个类。
$dbro = $this->getMock('db', array('prepare'), array(), '', false);
如果db
类未定义PHPUnit
创建db
类和db_2528522f
(某些哈希)。所以新创建的类根本没有任何功能。
您确定包含所有必需文件或自动加载是否正常工作?