2013-08-16 27 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生成的查询。