【发布时间】:2013-08-28 08:16:21
【问题描述】:
我正在用 CakePHP (PHPUnit) 编写各种模型测试
在 TravisCI 中,我得到类似:“未找到基表或视图:1146 表 'test.events' 在 Cake 的测试运行器中,我得到一个断言失败。
我遇到的问题是我的 ModelClasses 中有一些方法,我正在尝试测试哪些方法会使用 App::uses 调用其他模型。例如:
用户模型方法:
public function getOtherData() {
App::uses('Event', 'Model');
$this->Event = new Event;
return $this->Event->find('all');
}
还有测试:
public function testGetOtherData() {
$result = $this->User->getOtherData();
$this->assertTrue(!empty($result));
}
注意上面的例子就是这样。一个例子,简化以显示问题。我知道上面的例子有更好的“蛋糕”方式。
另外,我正在使用定义所需的固定装置,它们工作得很好。 (我通过模型中的另一种方法知道这一点,它在查找中使用连接,而不是 App::Uses())
编辑: 运行时的代码有效,但 UnitTest 正在默认数据库而不是测试数据库中寻找其他模型数据(使用 App::uses 时)。为什么不使用测试数据库?我错过了什么吗?
最后说明
使用 App::uses() 然后实例化类将在运行时工作。但是在测试期间它会失败,因为它会尝试使用默认数据库连接,而不是测试数据库连接。
根据所选答案,您可以在另一个模型方法中包含模型,而不是使用 App::uses、Cakes 内置类注册表 ClassRegistry::init('Model', true);。
【问题讨论】:
-
您确定您的模型中没有设置 $useDbConfig 属性吗?
-
我确定@joshua.paling 谢谢 :)