我需要測試一些報告,有一個複雜的數據結構和大量的數據影響這些報告,所以爲此目的創建設備將是非常繁瑣的工作。我想使用現有的數據庫(實際上是它的副本)來測試報告。Cakephp 3測試:如何從數據庫加載記錄?
我如何在cakephp 3測試中做到這一點? 是否有可能從cakephp 3中的數據庫加載夾具記錄(不是表格結構)?
我需要測試一些報告,有一個複雜的數據結構和大量的數據影響這些報告,所以爲此目的創建設備將是非常繁瑣的工作。我想使用現有的數據庫(實際上是它的副本)來測試報告。Cakephp 3測試:如何從數據庫加載記錄?
我如何在cakephp 3測試中做到這一點? 是否有可能從cakephp 3中的數據庫加載夾具記錄(不是表格結構)?
您可以使用該烘烤工具從您的表中的現有記錄燈具:
--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
由於PHPUnit的從數據庫中刪除一切它可以在每次測試之間訪問,您可能不想讓它訪問您的生產數據庫。
您正在尋找的解決方案可能是編寫每個燈具的init()
函數,以便從其從生產數據庫中提取的數據構建它的$records
屬性。
像這樣(未經證實):
public function init()
{
$thingsTable = TableRegistry::get('Things');
$this->records = $thingsTable->find()->toArray();
parent::init();
}
注意,這將真正減慢你的測試,儘管緩存結果將減輕。
謝謝,但有沒有解決方案直接使用數據庫沒有夾具?爲了達到這個目的(測試報告),我傾倒了「真實」數據庫並創建了一個單獨的數據庫,但是有很多記錄(數千個),所以我認爲從這些記錄生成固定不是一個好主意。 – Teimuraz