2012-01-11 2 views
1

私はレールアプリケーションのテスト用にrspecをセットアップしようとしています。私はいくつかのサンプルテストを作成し、rake rspec --traceを実行しました。rspecでテストする前にseed_fuフィクスチャをロードするには?

出力では、私はこのメッセージが表示さ

** Invoke spec:models (first_time) 
** Invoke db:test:prepare (first_time) 
** Invoke db:abort_if_pending_migrations (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:abort_if_pending_migrations 
** Execute db:test:prepare 
** Invoke db:test:load (first_time) 
** Invoke db:test:purge (first_time) 
** Invoke environment 
** Execute db:test:purge 
** Execute db:test:load 
** Invoke db:schema:load (first_time) 
** Invoke environment 
** Execute db:schema:load 

私は初期化子ディレクトリ内のファイルのいずれかでデータベースからいくつかの値を使用しようとしているため、スキーマは、タスクの休憩をすくい、次にロードします。通常、それらのレコードはデータベース内にあり、それらはすべてdb/fixturesディレクトリ内のseed_fuファイルに存在します。

db:schema:loadの後にこのファイルを実行する方法があります。誰かがそれをする方法を知っていますか?

答えて

3

にこの行を追加しました。

これが適切な順序で実行した種子を確保できるという利点があり、あなたがする必要がある場合は、特定のフィクスチャ・パスまたはフィルタオプションの引数を渡すことができます - 私は、テスト専用の治具に役立つ特定のパスを使用して見ることができましたインスタンス。この方法は、公的に使用されることを意味している場合、私は見当がつかない

# Load seed data from files 
# @param [Array] fixture_paths The paths to look for seed files in 
# @param [Regexp] filter If given, only filenames matching this expression will be loaded 
def self.seed(fixture_paths = SeedFu.fixture_paths, filter = nil) 
    Runner.new(fixture_paths, filter).run 
end 

、今のところ、少なくとも私の用途のために働くようだ:

はここでシード-fuの方法です。

+0

また、「SeedFu.seed」コールは、DBトラフィックを最小限に抑えながらシード値を最大化するためのbefore(:suite)コールで意味があります。 – Nerdmaster

0

私は許容できるが、理想的ではない解決策を思いついた。 initailizersファイルからデータベースへの参照を削除し、単純な整数の代入に置き換えました。私の種をロードするには、私はあなたがSeedFu.seedへの単純な呼び出しを直接シーダにアクセスすることができます表示されますspec_helper.rb

Dir[Rails.root.join("db/fixtures/*.rb")].each {|file| load file } 
0

あなたは開始前にRSpecのテストでこれを実行することができます。

`rake db:seed_fu` 

または

`rake db:seed_fu FILTER=locales` 

と後

テスト

`rake db:reset` 

注マジッククオート - ``

例:

describe "POST /v1/products" do 
    before(:all) do 
    `rake db:seed_fu FILTER=4_locales` 
    end 

    after(:all) do 
    `rake db:reset` 
    end 

    ... 
end 
関連する問題