【发布时间】:2017-08-25 07:51:55
【问题描述】:
我们有自定义的DataSource,想测试验证find方法执行后的数据是否等于未自定义的数据。我想,如果我们可以在测试代码中更改Datasource是可能的。我尝试了很多情况,但我无法让它工作。
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,我找到了它的原因。很抱歉,这不是 cakephp 问题,而是由我们项目的愚蠢的应用程序结构引起的。谢谢您的建议。