簡體   English   中英

模擬對象無法訪問類常量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM