2011-03-14 50 views
2

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

这可能吗?

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

请问,有人可以提出我的解决方案吗?

在此先感谢!

回答

0

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

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

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

# db_seeds.rb 
module DbSeeds 

    def seed_db 
    # Your Code 
    end 

end 

World(DbSeeds) 

#hooks.rb 
AfterConfiguration do |config| 
    seed_db 
end 
+0

非常感谢你。但是这仍然不起作用,因为在每个场景黄瓜用所有种子清理数据库之后(。 – 2011-03-15 13:57:48

+0

真正的问题是为什么当你播种一次黄瓜时,黄瓜清理数据库。 – 2011-03-15 14:17:54

1

创建一个在您的支持前的钩/ 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...