在CakePHP单元测试中输出生成的SQL查询

时间:2013-08-16 16:13:48

标签: cakephp phpunit cakephp-2.0 cakephp-2.1

我的单元测试非常简单。我的问题不在于“测试/查询有什么问题”,因为它是如何通过获取生成的SQL查询来解决APP / test.php中的这些问题。

以下是我的单元测试:

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更加详细,以便我可以看到正在生成什么查询?

1 个答案:

答案 0 :(得分:1)

看起来最好的办法是捕获PDOException并检查堆栈跟踪,因为这包括准备好的查询。

所以说你在使用$this->User->save($data)时遇到了麻烦:

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

_execute调用应该在顶部附近,生成的查询包含在args中。