カスタム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"が欠けているのか分かりません。私には分かりません。
あなたのPostgresのバージョンは何ですか? –
@Kevin Kyaw私のpostgresqlのバージョンは9.6.4で、なぜそれが原因であるかが分かりました。私はそれがケーキの問題ではなく、私たちのプロジェクトの愚かなアプリケーション構造によって引き起こされて申し訳ありません。アドバイスをしてくれてありがとう。 – tkowt