【发布时间】:2023-03-12 15:14:01
【问题描述】:
开箱即用,CakePHP 1.x 有一个 default 和 test 数据源。运行单元测试时,它使用测试数据库,并且在每次测试之前,它可以固定代码中的数据,或从默认数据库中导入数据。
在我正在构建的应用程序中,我有几种情况,在某些模型装置中指定 test 以外的数据库会很有用:
- 数据源是 Web 服务,返回的数据不能轻易地复制到测试数据库中,
- 存在大型只读表,在每次测试之前重新创建所有这些数据非常慢(而且没有必要)。
我查看了CakeTestFixture,但我还没有找到一个好的方法来做到这一点。也许每个模型都真的想拥有useDbConfig 和useTestConfig 属性?
在某些情况下,我可以通过以下方式解决这个问题:
function startTest() {
$this->Flock =& ClassRegistry::init('Flock');
$this->Flock->Sheep->useDbConfig = 'readonly_db';
$this->Flock->Dog->useDbConfig = 'soap';
}
但这只会涵盖一个测试用例的特定依赖关系,并且在一组测试中执行此操作将是一场维护噩梦。
有没有人遇到过类似的情况,你有解决办法吗?
【问题讨论】:
-
发现这个:cakephp.lighthouseapp.com/projects/42648/tickets/… 标记为“为我工作”,尽管没有给出解决方法。看起来没有 Cake 机制可以做到这一点,希望可以在某个时候以一种简单的方式围绕这个进行编程。
标签: php unit-testing cakephp