Railsユニットテストを実行しているときに私の工場の種子にアクセスできません

StackOverflow https://stackoverflow.com/questions/4654321

質問

いくつかのセットアップデータを含む工場があります。例えば:

Factory.define :event do |event|
  event.name  { Factory.next(:email) }
  event.blurb "Test event blurb"
  event.association(:owner, :factory => :user)
  event.countries Country.all
end

country.allは、すべての国をルックアップテーブルからその特定のイベントに割り当てるだけです。テストヘルパーでこのラインを使用してテストを実行する前に、種子を積んですべての国を含めます。

require "#{Rails.root}/db/seeds.rb"

これは、個々のユニットテストを実行するときにうまく機能します。

ruby test/unit/event_test.rb

ただし、country.allは、テストを実行したときに何も返しません。

rake test:units

なぜこれが起こっているのか誰もが知っていますか?

役に立ちましたか?

解決

test_helperにシードが必要で、1回ロードされます。各テスト実行後、データベースはシードデータを含めて一掃されます。毎回種子を積み込むために、このようなものをtest_helper'sに追加します ActiveSupport::TestCase クラス定義。

class ActiveSupport::TestCase
  # this line:
  setup { load "#{Rails.root}/db/seeds" }
end

他のヒント

のソースコードをご覧ください rake 宝石。ロードする必要があるようです seeds.rb 各テストファイルに手動でファイルをファイルします。 test_helper.rb.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top