开发者

Cannot access seeds in my factories when running Rails unit tests

I have factories that include some setup data. For example:

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 just assigns all countries from a lookup table to that particular event. I include all the countries by loading seeds before I run my tests with this line in my test helper:

开发者_如何学编程require "#{Rails.root}/db/seeds.rb"

This works great when running individual unit tests:

ruby test/unit/event_test.rb

However Country.all returns nothing when I run the test using:

rake test:units

Does anyone know why this is happening?


You require seeds in the test_helper, it's loaded once. After each test run database is wiped out, including seeded data. In order to make seeds load every time, add something like this to your test_helper's ActiveSupport::TestCase class definition.

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


Have a look at the source code for the rake gem. It looks like you'll have to load your seeds.rb file manually in each test file, or better yet, from test_helper.rb.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜