2011-11-02 45 views
1

在更新生產之前,我需要確保所有使用種子執行的操作都能正常工作。在Rails中測試seeds.rb

如何用RSpec測試seeds.rb?

+0

質量差的問題。重新編排,糾正錯別字。 – lzap

+0

很難回答,不知道你的意思是什麼「操縱」,但我猜測你的問題真的歸結爲「如何測試一個rake任務」(在這個rake rake db:seed中)。爲此,檢查例如http://stackoverflow.com/questions/1255176/test-rake-tasks – Thilo

+0

通過操縱,我的意思是改變一些記錄,DB中存在的priory。我需要測試,代碼正常工作。 – AntonAL

回答

0

種子旨在首先在空數據庫上運行,以正確地給出正確的狀態。如果該初始狀態需要更改(例如域表),則必須相應地調整種子,以便添加不存在的元素或更改現有元素。實現這一目標的一個好方法是做這樣的事情:

admin = Operator.find_or_create_by_login!(:admin) do |adm| 
    adm.name = 'admin' 
    adm.is_administrator = true 
end 

運行測試之前,我們還裝載種子,這樣的話很容易建立一個規範,將驗證所需要的數據是存在的(在你不會相信它)。

如果您需要操縱現有數據,首選的方法是使用遷移。我通常不會編寫遷移規範,而是在我的開發數據庫和我的生產數據庫的副本上進行測試(在實際生產之前運行它之前)。

希望這會有所幫助。