控制器单元测试失败,出现SQLSTATE [42000]错误

时间:2013-12-21 23:23:35

标签: unit-testing cakephp cakephp-2.4

我想对一个控制器动作进行单元测试并且有一些问题toio执行它。 我得到的错误如下:

  

SQLSTATE [42000]:语法错误或访问冲突:1064您有   SQL语法错误;查看与您的手册相对应的手册   用于在'questionExists'附近使用正确语法的MySQL服务器版本   在第1行

方法:

  

questionExists

在问题模型中定义。

我的测试功能如下:

public function testView() {
        $result = $this->testAction('/questions/questions/view/1', array('return' => 'vars'));
    }

我想测试的Controller动作如下所示:

公共功能视图($ id = null){

    if (!$this->Question->questionExists($id, 'id_virtual')) {
        throw new NotFoundException(__('Invalid question'));
    }
    $options = array('conditions' => array('Question.id_virtual' => $id));
    $this->set('question', $this->Question->find('first', $options));
}

所以这对我来说非常困惑。 有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

找不到你的模型类,CakePHP动态地为该表创建一个实例,但这不过是基本的Model类。当然后调用代码时,它会尝试在应用程序中不是您的问题模型的实例上调用该方法。你必须弄清楚会发生什么。