2017-08-25 81 views
0

DataSource的測試中,我們有自定義數據源,並希望測試驗證Find方法後的數據執行等於我想它,這將是可能的,如果我們能夠在測試代碼更改數據源人們不customized.As。我嘗試了很多案例,但是我無法做到這一點。如何在CakePHP中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」是missing.Any想法使我感激他們。

+0

什麼是你的Postgres版本? –

+0

@Kevin Kyaw我的postgresql版本是9.6.4,我找到了它的原因。我很抱歉,這不是cakephp問題,並且是由我們項目的愚蠢應用程序結構引起的。感謝您嘗試提供建議。 – tkowt

回答

0

我終於找到了刺激性的和愚蠢的刺激性代碼由外database.php中文件覆蓋後,相應的設置數據源setting.Following代碼工作正常。

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

ClassRegistry:Init("ModelForOldSetting"); 
$model = $this->getMockForModel('ModelForOldSetting');