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

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.所有人只将所有国家从查找表分配到该特定事件。在我的测试助手中使用此行进行测试之前,我可以通过加载种子来包括所有国家 /地区:

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

在进行单个单元测试时,这效果很好:

ruby test/unit/event_test.rb

但是,当我使用测试运行测试时,所有乡村都没有返回:

rake test:units

有人知道为什么会发生这种情况吗?

有帮助吗?

解决方案

您需要在test_helper中的种子,它已加载一次。将每个测试运行数据库删除后,包括种子数据。为了使种子每次加载,请在您的test_helper上添加类似的东西 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