我想測試一個管理數據庫中數據訪問的類(你知道,CRUD,本質上)。我們正在使用的數據庫庫恰好有一個API,其中您首先通過靜態調用獲取表格對象:模擬PHPUnit中的對象來模擬靜態方法調用?
function getFoo($id) {
$MyTableRepresentation = DB_DataObject::factory("mytable");
$MyTableRepresentation->get($id);
... do some stuff
return $somedata
}
...您明白了。我們試圖測試這個方法,但是嘲笑DataObject的東西,這樣(a)我們不需要一個實際的db連接來測試,並且(b)我們甚至不需要包含DB_DataObject lib進行測試。
但是,在PHPUnit中,我似乎無法獲得$ this-> getMock()來正確設置靜態調用。我有...
$DB_DataObject = $this->getMock('DB_DataObject', array('factory'));
...但測試仍然說未知的方法「工廠」。我知道它正在創建該對象,因爲在它表示無法找到DB_DataObject之前。現在可以。但是,沒有辦法?
我真正想要做的是有兩個模擬對象,一個用於返回表格對象。因此,我不僅需要指定工廠是靜態調用,還要返回我已經設置的一些指定的其他模擬對象。
我應該提到一個警告,我在SimpleTest前段時間做了這個(找不到代碼),它工作正常。
什麼給?
[更新]
我開始掌握它是與預計()