2 yii
在不访问数据库服务器(或其他外部资源)的情况下,针对Yii模型执行单元测试的首选/正确方法是什么?我发现的所有单元测试文档都建议您必须具有活动的数据库服务器,但是显然这对于单元测试而言并不理想。
对于它的价值,这是我的config / test.php和bootstrap.php:
<?php
return CMap::mergeArray(
require(dirname(__FILE__).'/main.php'),
array(
'components'=>array(
'fixture'=>array(
'class'=>'system.test.CDbFixtureManager',
),
),
)
);
Run Code Online (Sandbox Code Playgroud)
和
<?php
// change the following paths if necessary
$yiit=dirname(__FILE__).'/../../yii-1.1.13.e9e4a0/framework/yiit.php';
$config=dirname(__FILE__).'/../config/test.php';
require_once($yiit);
require_once(dirname(__FILE__).'/WebTestCase.php');
Yii::createWebApplication($config);
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,我得到:
CDbException: CDbConnection.connectionString cannot be empty.
Run Code Online (Sandbox Code Playgroud)
Yii作者的集成测试名称具有误导性。他们称它们为“单元”。实际上,如果您需要与数据库服务器建立连接,则不再需要进行单元测试。
如果要单独测试ActiveRecords,则首先应实现一个伪造的CDbConnection,该CDbConnection将映射到某些内存中的数据集(或基于文件系统的数据集)。Yii没有内置这样的东西。
之后,您只需做CActiveRecord::$db = new FakeDbConnection()自己的事bootstrap.php,我相信您根本不必更改现有的测试套件。
| 归档时间: |
|
| 查看次数: |
1049 次 |
| 最近记录: |