2012-12-07 32 views
1

我建立一個獨立的寶石,你可以看一下源代碼在這裏RSpec的,FactoryGirl和ActiveRecord的測試: https://github.com/mabounassif/facebook_event_fetcher.git沒有護欄

隨着我的當前設置,我不能沒有設置測試測試使用FactoryGirl數據庫第一。什麼是「準備」我的測試數據庫的正確方法?

我想到的解決方案是創建一個db:test:prepare rake任務。基本上,它會刪除test.sqlite3文件(如果存在),然後創建一個新文件並使用正確的表設置遷移數據庫。 起初它似乎是一個乾淨的解決方案,但是當我運行rake任務時,我得到了ActiveRecord NotConnected,並且我必須在Rakefile中設置連接似乎很麻煩,特別是我已經在spec_helper .RB。它似乎重複和不潔。

任何人都可以提示我應該怎麼做?

回答

0

我終於選擇了再次在Rakefile中設置ActiveRecord連接。 這是我最後的安裝,可能會派上用場的人在那裏:

https://github.com/mabounassif/facebook_event_fetcher

這一切多汁部分是耙文件:

namespace :db do 
    desc "Migrate the database through scripts in lib/generators/facebook_event_fetcher/install/templates. Target specific version with VERSION=x" 
    task :prepare => :environment do 
    ActiveRecord::Migration.verbose = true 
    ActiveRecord::Migrator.migrate('lib/generators/facebook_event_fetcher/install/templates', nil) 
    end 

    task :environment do 
    File.delete('db/test.sqlite3') if File.exist?('db/test.sqlite3') 
    ActiveRecord::Base.establish_connection(YAML.load_file("config/database.yml")) 
    ActiveRecord::Base.logger = Logger.new(File.open('db/database.log', 'a')) 
    end 
end