如何在CakePHP中为特定模型设置测试数据源?

时间:2011-02-28 16:43:37

标签: php unit-testing cakephp

开箱即用,CakePHP 1.x有一个defaulttest数据源。运行单元测试时,它使用测试数据库,在每次测试之前,它可以从代码中固定数据,或从默认数据库导入数据。

在我正在构建的应用程序中,我有几个案例,在某些模型装置中指定除test以外的数据库是有用的:

  1. 数据源是一个Web服务,返回的数据无法轻松地与测试数据库一起复制,
  2. 存在大型只读表,并且在每次测试之前重新创建所有这些数据非常慢(并且没有必要)。
  3. 我看过CakeTestFixture,但我还没有看到一个很好的方法来做到这一点。也许每个模型都希望拥有useDbConfiguseTestConfig属性?

    在某些情况下,我可以通过以下方式破解我的方式:

    function startTest() {
        $this->Flock =& ClassRegistry::init('Flock');
        $this->Flock->Sheep->useDbConfig = 'readonly_db';
        $this->Flock->Dog->useDbConfig = 'soap';
    }
    

    但这只会涵盖一个测试用例的特定依赖项,而在一系列测试中执行此操作将是一个维护噩梦。

    有没有人遇到类似的情况,你有解决方案吗?

1 个答案:

答案 0 :(得分:0)

在database.php中创建$ test db连接,cake将负责其余部分。查看核心测试用例中的一些示例,您将看到没有任何特殊的添加。