运行Rails单元测试时,无法访问工厂中的种子

时间:2011-01-11 04:54:04

标签: ruby-on-rails unit-testing factories

我的工厂包含一些设置数据。例如:

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

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:1)

你需要test_helper中的种子,它被加载一次。每个测试运行数据库被清除后,包括种子数据。为了每次都加载种子,请在test_helper的ActiveSupport::TestCase类定义中添加类似的内容。

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

答案 1 :(得分:0)

查看rake gem的源代码。看起来您必须在每个测试文件中手动加载seeds.rb文件,或者更好,从test_helper.rb加载。{/ p>