2017-08-25 7 views
0

カスタムDataSourceがあり、findメソッドの実行がカスタマイズされていないものと同じであることを検証するテストが必要です。テストコードでDatasourceを変更できると思います。私は多くの場合を試みますが、私はそれを機能させることができませんでした。cakephpでのDataSourceテスト2

public $default = [ 
    'datasource' => 'CustomPostgres', 
    'persistent' => false, 
    'host' => 'localhost', 
    'port' => '5432', 
    'login' => 'hoge', 
    'password' => 'hogehoge', 
    'database' => 'prod', 
    'schema' => 'public', 
    'prefix' => '', 
    'encoding' => 'utf8' 
]; 

public $test = [ 
    'datasource' => 'CustomPostgres', 
    'persistent' => false, 
    'host' => 'localhost', 
    'port' => '5432', 
    'login' => 'hoge', 
    'password' => 'hogehoge', 
    'database' => 'test_prod', 
    'schema' => 'public', 
    'prefix' => '', 
    'encoding' => 'utf8' 
]; 

public $old = [ 
    'datasource' => 'Database/Postgres', 
    'persistent' => false, 
    'host' => 'localhost', 
    'port' => '5432', 
    'login' => 'hoge', 
    'password' => 'hogehoge', 
    'database' => 'dev', 
    'schema' => 'public', 
    'prefix' => '', 
    'encoding' => 'utf8' 
]; 

public $test_old = [ 
    'datasource' => 'Database/Postgres', 
    'persistent' => false, 
    'host' => 'localhost', 
    'port' => '5432', 
    'login' => 'hoge', 
    'password' => 'hogehoge', 
    'database' => 'test_dev', 
    'schema' => 'public', 
    'prefix' => '', 
    'encoding' => 'utf8' 
]; 

//try1 
$this->Model->setDataSource('test_old'); 
//try2 
ConnectionManage::create('test_old',///); 
//try3 
////in fixture File and ClassRegistry:Init("Model") 
$useDbConfig = "old"; 
////inner start::up 
ClassRegistry:Init("Model"); 
//try4 extends model 
ModelForOldSetting extends Model{ 
    $useDbConfig = "old"; 
} 

上記のコードは動作しませんでしたし、それは常にエラーが MissingConnectionException言う発する:データベース接続は「Postgresの」欠けている、またはテストを実行している場合、デフォルトのデータソースのデータベース/ Postgresのを設定するときしかし、それは正常に動作し、作成することができませんでしたテストなしでローカルブラウザを実行しています。

だから、私は本当になぜデータベース接続 "Postgres"が欠けているのか分かりません。私には分かりません。

+0

あなたのPostgresのバージョンは何ですか? –

+0

@Kevin Kyaw私のpostgresqlのバージョンは9.6.4で、なぜそれが原因であるかが分かりました。私はそれがケーキの問題ではなく、私たちのプロジェクトの愚かなアプリケーション構造によって引き起こされて申し訳ありません。アドバイスをしてくれてありがとう。 – tkowt

答えて

0

最後に、外側のdatabase.phpファイルによって刺激的で愚かなコードが見つかったため、データソースの設定を上書きしました。適切な設定を行った後、コードは正常に機能します。

ModelForOldSetting extends Model{ 
    $useDbConfig = "dev"; 
    $useTables = "models"; 
} 

ClassRegistry:Init("ModelForOldSetting"); 
$model = $this->getMockForModel('ModelForOldSetting'); 
関連する問題