我正在用 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() 然后实例化该类将在运行时工作。但是在测试期间它会失败,因为它会尝试使用默认数据库连接,而不是测试数据库连接。
ClassRegistry::init('Model', true);
根据选定的答案,您可以从另一个模型方法中包含模型,而不是使用 App::uses、Cakes built in class registry, 。