2013-08-16 31 views
1

我的單元測試非常簡單。我的問題不像'測試/查詢有什麼問題',因爲它是如何通過獲取生成的SQL查詢來在APP/test.php中解決這些問題。在CakePHP中輸出生成的SQL查詢單元測試

以下是我的單元測試:

public function testMatchingPasswords() { 
    debug($this->User->save($this->genericSaveData)); 
} 

而且我得到以下錯誤:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'User.username' in 'where clause' 

我理解這個問題,如果我可以看到生成的SQL查詢,我應該是能夠進一步解決問題並解決問題。但在test.php上它不顯示生成的SQL查詢。我如何使test.php更詳細,以便我可以看到正在生成的查詢?

+0

查詢總是顯示在底部。這裏你的模式/夾具文件是什麼?確定它包含用戶名字段? – mark

+0

當存在異常時,查詢顯然不會顯示$ this-> Model-> save。問題不在於什麼問題,而是爲什麼不在那裏查詢,或者如何輸出查詢。 – alairock

回答

1

看起來好像最好的辦法是捕獲PDOException並檢查堆棧跟蹤,因爲這包括準備好的查詢。

所以說,您有$this->User->save($data)麻煩你可以這樣做:

try { 
    $this->User->save($data); 
} catch (PDOException $e) { 
    var_dump(array_slice($e->getTrace(), 0, 3)); 
} 

_execute通話應該是相當接近頂部,與包含在args生成的查詢。