[英]Mocked object not able to access class constants
我剛剛開始了解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對象的類常量? 或者,我在宏偉的計划中到底想念什么?
getMock
可以基於不存在的類創建對象。 在這種情況下,它將創建兩個類。
$dbro = $this->getMock('db', array('prepare'), array(), '', false);
如果db
類沒有定義PHPUnit
創建db
類和db_2528522f
(一些散)。 因此,新創建的類根本沒有const。
您確定其中包含所有必需的文件,或者您的自動加載正常嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.