2011-09-18 54 views
3

我正在使用Ruby on Rails 3.0.9和RSpec 2.我想在我測試我的應用程序之前自動加載測試數據庫中的種子數據。也就是說,在測試啓動時(當我運行測試時)我想「自動填充」\「自動啓動」測試數據庫如何在測試我的應用程序之前自動加載測試數據庫中的數據?

如何使用種子數據填充數據庫?


P.S.:當我四處閱讀,(也許)我應該通過向/spec/spec_helper.rb文件添加一些代碼來填充測試數據庫...但是什麼代碼以及如何?

在我task/custom.rake文件我有:

namespace :test do 
    desc "Boot database" 
    task :boot => [:load, :seed] do 
    end 

    desc "Reboot database" 
    task :reboot => [:purge, :boot] do 
    end 
end 

回答

3

如果你想只調用種子rake任務,我會做這樣的事情:

ENV['RAILS_ENV'] = 'test' 
Rake::Task["db:seed"].invoke 

但是,我'd推薦使用Fixtures(http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures)。

或者更好的像Factory Girl(https://github.com/thoughtbot/factory_girl)這樣的燈具替換品,您可以將虛擬數據加載到所有相關數據中。這是一個不太脆弱的方法。

+1

我已經在使用燈具和工廠女孩。我想填充測試數據庫(就像我爲開發數據庫所做的那樣)。 – user502052

+1

+1爲factory_girl。您還可以將其與[僞造](https://github.com/sevenwire/forgery)或[類似](http://ruby-toolbox.com/categories/random_data_generation.html)結合使用,以獲得更多樂趣。 – talyric

相關問題