2017-03-07 28 views
0

我有一個單表繼承數據模型,其中CityPage < Destination。這工作得很好。Minitest:使用STI時的表空爲

現在我已經添加了第二個類型CountryPage < Destination,我的測試失敗。具體來說,CityPage.all返回一個空的結果,即使我有CityPage固定裝置(之前沒有改變&完美工作)。

我在做什麼錯?爲什麼我的測試數據不會被生成?

回答

0

當您有多個孩子模型的STI時,您需要使用以父母命名的一個夾具文件,並使用type屬性(即STI在底層做了什麼)區分各個夾具。所以在我的情況下,我需要有/test/fixtures/destinations.yml,而不是/test/fixtures/{city,country}_pages.yml

簡單的谷歌搜索表明這與Minitest在測試運行後清除數據庫有關 - 請參閱下面的註釋。

+1

爲了澄清,在導入每個文件之前,每個fixture文件的順序加載會導致關聯的數據庫表被清空。如果你有多個夾具文件最終使用同一個表格(在這種情況下是'destination'),那麼你將會有一段糟糕的時間。處理YAML文件的順序將取決於系統,因此本地工作的內容可能無法在您的CI服務上工作,反之亦然。 – Barry

相關問題