ruby-on-rails – Ruby on Rails:黄瓜:如何在每个场景后重置数据库?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Ruby on Rails:黄瓜:如何在每个场景后重置数据库?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我在我的测试环境中

现在,在终端,rake db:test:prepare清除db …但不是当我从代码中运行它时

我在features / support / env.rb中有这个:

Before do
    task :build_all do
      [ :debug,:release ].each do |t|
        $build_type = t
        Rake::Task["db:test:prepare"].reenable
        Rake::Task["db:test:prepare"].invoke
      end
    end
end

但是当我的测试运行完毕后,我的数据仍保留在project_test数据库

这是在我的database.yml中

test:
  adapter: MysqL
  encoding: utf8
  database: projectname_test
  username: root
  password:

我也试过了

db:test:purge

db:test:reset

我知道它正在使用我的测试数据库,因为我检查了MysqLWorkbench,它将数据插入到表中……但是在完成时不会删除数据(我必须手动删除它).
当表为空时,测试用例通过

解决方法

你应该用
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
  DatabaseCleaner.start
end

After do |scenario|
  DatabaseCleaner.clean
end

猜你在找的Ruby相关文章