2017-10-12 38 views
0

比方說,我有兩個型號,其中一個需要其他的存在來驗證:Rails進行測試的最佳實踐,當一個ActiveRecord的模型需要另一

class Mother < ActiveRecord::Base 
    has_many :kids 
end 

class Kid < ActiveRecord::Base 
    belongs_to :mother 
    validates_presence_of :mother 
end 

當我寫模型小子試驗,我想要測試的第一件事是,如果沒有一個存在的母親(即,存在於數據庫中),則不能保存孩子。然而,要做到這一點,我需要先讓我的測試創建一個母親。

處理這種情況的最佳方法是什麼?我應該:

  • 在我測試之前將測試數據庫與母體的實例結合起來?
  • 在Kid進行測試之前,依靠母親創建母親實例的單元測試?在這種情況下,我必須指定不推薦的測試順序,是否正確?
  • 其他一些選項?
+0

既不,您應該做任何您的測試框架提供。固定裝置或工廠。你應該不**編寫依賴於其他測試的測試,實際上這不應該發生,因爲你的數據庫應該在測試之間清空。 – meagar

+0

@meagar我認爲這應該是公認的答案 - 無論是固定裝置還是工廠。你能否再次回覆作爲答案,以便我可以接受它? –

回答

0

初始化一個母親和一個孩子沒有母親: mother = Mother.new PUIS kid = Kid.new

當您嘗試堅持一個孩子一樣,所以你可以先寫會引發錯誤規格: expect { kid.save! }.to raise_error

然後,設置母親kid.mother = mothe。 並期望這次堅持孩子沒有錯誤。

相關問題