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

Dee*_*pak 1 ruby ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

fuz*_*lej 15

从database_cleaner 文档中,希望它有所帮助:

我编写这个库的动机之一就是在我的非rails ActiveRecord项目中有一个简单的方法来打开Rails所谓的"transactional_fixtures".例如,Cucumber附带了一个Rails世界,它将在事务中包装每个场景.这很好,但如果您在非rails项目中使用ActiveRecord会怎么样?您以前必须复制并粘贴所需的代码,但使用DatabaseCleaner,您现在可以说:

#env.rb

   require 'database_cleaner'
   require 'database_cleaner/cucumber'
   DatabaseCleaner.strategy = :transaction
Run Code Online (Sandbox Code Playgroud)

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

#env.rb

require 'database_cleaner'
require 'database_cleaner/cucumber'
DatabaseCleaner.strategy = :truncation
Run Code Online (Sandbox Code Playgroud)

您可以充分利用这两个世界并使用最好的工作:

#env.rb

require 'database_cleaner' 
require 'database_cleaner/cucumber'

DatabaseCleaner.strategy = (ENV['SELENIUM'] == 'true') ? :truncation : :transaction
Run Code Online (Sandbox Code Playgroud)

  • 伟大的,反对票,没有评论.如果你愿意,下次去google找一个答案 (10认同)