2013-11-22 112 views
1

我有很多使用固定裝置的測試,這對於測試諸如「我是否從此方法獲得正確數量的記錄」以及類似的測試非常有用。CakePHP測試 - 實時導入記錄

class CountryFixture extends CakeTestFixture { 
    public $import = array(
     'model' => 'Country', 
     'records' => false 
    ); 

    public $records = array(
     array('id' => '1','name' => 'Sweden', 'region_id' => '1'), 
     array('id' => '2','name' => 'Norway', 'region_id' => '1') 
    } 
} 

現在我想我想測試數據本身。例如,我想確保沒有哪個國家出於某種原因失去了地區。然後我做一個新的夾具導入所有記錄。

class CountryLiveFixture extends CakeTestFixture { 
    public $import = array(
     'model' => 'Country', 
     'records' => true 
    ); 
} 

這可以正常工作。但似乎沒有必要創建第二個燈具。有什麼方法可以在測試中隨時設置導入記錄嗎?

回答

1

「我收到的記錄的權利數量從這種方法背」

建議: 您應該測試業務邏輯,不是已經由框架進行測試。 如果你的查詢是正確的,你爲什麼需要測試,如果你確實得到正確的計數?蛋糕已經爲你做了。

+0

嗯,是的,但我沒有測試框架,我正在測試數據。我的第一個例子的意思是,使用固定裝置進行的測試對於getCustomersThatFullFillRequirement等測試方法很有用,您可以簡單地看到記錄的數量是正確的,而這是動態記錄無法做到的。 事情是,我們有一個錯誤,源於一些國家沒有region_id(在這個比喻)。所以我們認爲,爲什麼不編寫一個測試來查看數據,以確定我們不會再次遇到同樣的錯誤。你看到我想要完成什麼嗎? –

+0

如果你的函數只有查詢,你不需要真的測試它。你應該多關注你的查詢吧?如果您在查詢中添加了WHERE region_id IS NOT NULL,則除了燈具數據更改之外,您總能得到正確的結果。 –

+0

問題不在於自我測試。就像我說的那樣,測試就像現在一樣。問題是我需要有兩個燈具。一個帶有靜態數據,即,我手動設置了幾個帖子,另一個帶有動態數據,即,我從數據庫中導入所有記錄。我的問題是,有沒有什麼方法可以只使用一個Fixture,並將一些測試的固定數據和其他測試的導入記錄使用。 –