2

データベース サーバー (または他の外部リソース) にアクセスせずに Yii モデルに対して単体テストを実行するための推奨/正しい方法は何ですか? 私が見つけたすべての単体テスト ドキュメントは、アクティブなデータベース サーバーが必要であることを示唆していますが、明らかに単体テストには理想的ではありません。

価値のあるものとして、ここに私の config/test.php と私の bootstrap.php があります:

<?php

return CMap::mergeArray(
    require(dirname(__FILE__).'/main.php'),
    array(
        'components'=>array(
            'fixture'=>array(
                'class'=>'system.test.CDbFixtureManager',
            ),
        ),
    )
);

<?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);

テストを実行すると、次のようになります。

CDbException: CDbConnection.connectionString cannot be empty.
4

2 に答える 2

2

私が考えることができる唯一の代替手段は、SQLite を使用し、単体テストで DB ファイルを提供することです。ただし、これにもいくつかの制限があります。たとえば、「実際の」DB からの外部キーやその他の機能はサポートされません。結局のところ、モデルをテストしたい場合は、ある種の DBが必要です。

于 2013-03-21T13:50:40.507 に答える