我正在使用黄瓜+水豚进行测试。数据库清洁工效果很好,但是当我将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
答案 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