2011-02-28 65 views
0

開箱即用,CakePHP 1.x有一個defaulttest數據源。運行單元測試時,它使用測試數據庫,並且在每次測試之前,它可以修復代碼中的數據,或從默認數據庫導入數據。如何在CakePHP中爲特定模型設置測試數據源?

在應用程序中我建立我有一對夫婦的情況下,它會在某些型號的指定有用的賽程比其他test數據庫:

  1. 數據源是一個Web服務和返回的數據不能輕易地與測試數據庫一起復制,因此存在較大的只讀表,並且在每次測試之前重新創建所有這些數據的速度非常緩慢(而且不必要)。

我已經看過CakeTestFixture但我看不到一個很好的方法來做到這一點呢。也許每個模型真的想要一個useDbConfiguseTestConfig屬性?

我可以做這樣的事情破解我的辦法解決這在某些情況下:

function startTest() { 
    $this->Flock =& ClassRegistry::init('Flock'); 
    $this->Flock->Sheep->useDbConfig = 'readonly_db'; 
    $this->Flock->Dog->useDbConfig = 'soap'; 
} 

但是,這將只涵蓋具體依賴於一個測試用例,並跨越了一組測試這樣做將是一個維護惡夢。

有沒有人遇到類似的情況,你有解決方案嗎?

+0

發現這一點: http://cakephp.lighthouseapp.com/projects/42648/tickets/207-in-test-suite-models-are-forced-to-use-specific-datasource 標有「工程爲我「,雖然沒有給出解決方法。看起來沒有Cake的機制可以做到這一點,希望可以在某種程度上以非惡作劇的方式對此進行編程。 – contrebis 2011-03-03 11:28:25

回答

0

在database.php中創建$ test數據庫連接,其餘的數據將由Cake創建。看看核心測試用例中的一些例子,你會發現沒有特別添加。

+0

喜歡教條,謝謝你的回答。我的一些模型使用標準測試數據庫(已經設置好,工作正常),一些模型指向不同的數據源,因此這不會在整個板上起作用。 – contrebis 2011-03-01 00:18:39

+0

開始認爲每個數據源都需要與Cake的通常機制分開設置,例如我設置了一個像CakePHP那樣不會搞亂的'$ myModel-> customDataSource'屬性。然後我可以手動查詢()這個對象。我應該指出這不是一個有趣的項目... – contrebis 2011-03-01 00:27:38

+0

也許你應該嘲笑數據源 – dogmatic69 2011-03-01 10:38:06

相關問題