【发布时间】:2013-12-21 23:23:34
【问题描述】:
我想对控制器操作进行单元测试,但在执行它时遇到了一些问题。 我得到的错误如下:
SQLSTATE[42000]:语法错误或访问冲突:1064 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在“questionExists”附近使用正确的语法 在第 1 行
方法:
问题存在
在问题模型中定义。
我的测试函数如下所示:
public function testView() {
$result = $this->testAction('/questions/questions/view/1', array('return' => 'vars'));
}
我要测试的控制器动作如下所示:
公共函数视图($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));
}
所以这让我很困惑。 谁能指出我正确的方向?
【问题讨论】:
-
您可以检查您的 Question 对象的类 (
debug(get_class($$this->Question));- 它将是AppModel) 以确认 burzum 的答案。典型的原因是文件名中的拼写错误。 -
我认为这不可能是重复的。我刚刚在单元测试中遇到错误。 appmis 运行完美
-
所有此类错误的原因都是一样的:模型实例没有实现被调用的方法。在您的情况下,可能在模型
Question.Question之前发现了对模型Question(这将是一个AppModel 实例)的引用。当您找到原因时(到目前为止,cmets 只描述了一种解决方法),请将其添加为答案 =)。
标签: unit-testing cakephp cakephp-2.4