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)