想在运行黄瓜之前加载种子数据

时间:2011-03-14 08:26:23

标签: ruby-on-rails-3 cucumber

我希望黄瓜在开始测试之前在“db / seeds.rb”中加载我的种子数据。不是在每个场景或功能之前,而是在运行测试之前只执行一次。 并且在每个场景之后,种子必须保留在db。

这可能吗?

我已经尝试创建一个文件“features / support / seed_data.rb”,并在那里需要我的db / seeds.rb,但似乎根本没有加载文件。我试图在env.rb中要求我的种子 - 没有影响。

拜托,有人能建议我解决方案吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

在support / hooks.rb文件中创建一个前挂钩,如下所示:

Before('@load-seed-data') do
  load File.join(Rails.root, 'db', 'seeds.rb')
end

在场景之前的测试中,像这样调用钩子:

@load-seed-data @US49
Scenario: This is a scenario that needs seed data.
Given...

答案 1 :(得分:0)

如何从seeds.rb文件中提取代码并将其粘贴在AfterConfiguration块中的hooks.rb中?

AfterConfiguration do |config|
  # Your code from seeds.rb
end

在运行期间,应该在配置黄瓜之后调用once。至少这样做,你可以确定你是否只是包含种子文件的问题。另一个想法是将seeds.rb直接粘贴在支持目录中作为模块,然后从AfterConfiguration中调用它:

# db_seeds.rb
module DbSeeds 

  def seed_db
    # Your Code
  end

end

World(DbSeeds)

#hooks.rb
AfterConfiguration do |config|
  seed_db
end