2017-02-24 45 views
0

我需要測試一些報告,有一個複雜的數據結構和大量的數據影響這些報告,所以爲此目的創建設備將是非常繁瑣的工作。我想使用現有的數據庫(實際上是它的副本)來測試報告。Cakephp 3測試:如何從數據庫加載記錄?

我如何在cakephp 3測試中做到這一點? 是否有可能從cakephp 3中的數據庫加載夾具記錄(不是表格結構)?

回答

2

您可以使用該烘烤工具從您的表中的現有記錄燈具:

--records, -r  Generate a fixture with records from the non-test 
        database. Used with --count and --conditions to limit 
        which records are added to the fixture. 
--count, -n  When using generated data, the number of records to 
        include in the fixture(s). (default: 
        1) 

例如:

cake bake fixture you_table_name -r -c 100

+0

謝謝,但有沒有解決方案直接使用數據庫沒有夾具?爲了達到這個目的(測試報告),我傾倒了「真實」數據庫並創建了一個單獨的數據庫,但是有很多記錄(數千個),所以我認爲從這些記錄生成固定不是一個好主意。 – Teimuraz

0

由於PHPUnit的從數據庫中刪除一切它可以在每次測試之間訪問,您可能不想讓它訪問您的生產數據庫。

您正在尋找的解決方案可能是編寫每個燈具的init()函數,以便從其從生產數據庫中提取的數據構建它的$records屬性。

像這樣(未經證實):

public function init() 
{ 
    $thingsTable = TableRegistry::get('Things'); 
    $this->records = $thingsTable->find()->toArray(); 
    parent::init(); 
} 

注意,這將真正減慢你的測試,儘管緩存結果將減輕。

相關問題