【问题标题】:Run exec 'rake db:drop db:create db:migrate db:seed' in cucumber before each scenario在每个场景之前在黄瓜中运行 exec 'rake db:drop db:create db:migrate db:seed'
【发布时间】:2016-03-05 19:59:12
【问题描述】:
我搜索并尝试了很多,但没有找到我的答案。
我有一些用 gherkin 编写的项目的功能文件(在 rails 项目中)。所有步骤都已定义,如果我每一步都启动它们,功能本身运行得非常好。
我可以与我需要执行的黄瓜一起运行所有场景
rake db:drop db:create db:migrate db:seed 在每个场景之前。
我在 env.rb 的 begin 函数中尝试了 exec 'rake db:drop db:create db:migrate db:seed' ,并在功能的背景步骤中尝试了相同的操作。该命令已执行,但之后黄瓜停止并且不执行场景。这个怎么用?
感谢您的帮助!
【问题讨论】:
标签:
ruby-on-rails
ruby
cucumber
rake
exec
【解决方案1】:
起初不了解 database_cleaner,但现在我明白了.... 播种“已清理”数据库时存在问题。
我现在所做的是(在 env.rb 中)
begin
require 'database_cleaner'
require 'database_cleaner/cucumber'
DatabaseCleaner.strategy = :truncation
rescue NameError
raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end
Before do |scenario|
load Rails.root.join('db/seeds.rb')
end
Around do |scenario, block|
DatabaseCleaner.cleaning(&block)
end