我的工厂包含一些设置数据。例如:
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
有谁知道为什么会这样?
答案 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>