0

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

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

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

4

2 に答える 2

1

test_helper にシードが必要です。一度ロードされます。各テスト実行後、シードされたデータを含むデータベースが消去されます。シードを毎回ロードするには、test_helper のActiveSupport::TestCaseクラス定義に次のようなものを追加します。

class ActiveSupport::TestCase
  # this line:
  setup { load "#{Rails.root}/db/seeds" }
end
于 2011-01-11T06:16:07.717 に答える
0

rakegemのソースコードを見てみましょう。seeds.rb各テスト ファイルにファイルを手動でロードする必要があるようですtest_helper.rb

于 2011-01-11T05:17:41.470 に答える