黄瓜 - 启用默认驱动程序(selenium)时,数据库清理程序不起作用

时间:2011-07-25 03:28:17

标签: ruby-on-rails ruby cucumber

我正在使用黄瓜+水豚进行测试。数据库清洁工效果很好,但是当我将Capybara.default_driver更改为selenium时,数据库清理工具无效。下面是我的env.rb文件。

Capybara.default_selector = :css
Capybara.default_driver = :selenium
Capybara.javascript_driver = :selenium
ActionController::Base.allow_rescue = false
Cucumber::Rails::World.use_transactional_fixtures = true

if defined?(ActiveRecord::Base)
  begin
    require 'database_cleaner'
    DatabaseCleaner.strategy = :truncation
  rescue LoadError => ignore_if_database_cleaner_not_present
  end
end

OmniAuth.config.test_mode = true

1 个答案:

答案 0 :(得分:15)

从database_cleaner documentation,希望它有所帮助:

  

我写这个图书馆的动机之一就是有一个简单的方法   在我的非rails中打开Rails所谓的“transactional_fixtures”   ActiveRecord项目。例如,Cucumber带有Rails世界   这将在事务中包装每个场景。这很好,但是什么   如果你在非rails项目中使用ActiveRecord?你曾经有过   复制并粘贴所需的代码,但您可以使用DatabaseCleaner   现在说:

     

<强>#env.rb

   require 'database_cleaner'
   require 'database_cleaner/cucumber'
   DatabaseCleaner.strategy = :transaction
  

现在假设您正在运行您的功能,它需要这样做   涉及另一个过程(即Selenium针对您的应用程序运行   服务器。)您只需更改策略类型:

     

#env.rb

require 'database_cleaner'
require 'database_cleaner/cucumber'
DatabaseCleaner.strategy = :truncation
  

你可以充分利用两个世界,并使用最好的一个:

     

<强>#env.rb

require 'database_cleaner' 
require 'database_cleaner/cucumber'

DatabaseCleaner.strategy = (ENV['SELENIUM'] == 'true') ? :truncation : :transaction