2011-07-25 10 views
1

私のテストにcucumber + capybaraを使用しています。データベースクリーナーは正常ですが、Capybara.default_driverをseleniumに変更するとデータベースクリーナーはワーキング。以下は私のenv.rbファイルです。 database_cleaner documentationからCucumber - デフォルトのドライバ(セレン)が有効になっているとデータベースクリーナーが動作しません

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 

答えて

15

、それが役に立てば幸い:このライブラリーを作成するための私の動機の

一つは、私以外のコール「transactional_fixturesを」Railsの何をオンにする簡単な方法 を持っていることでしたレール ActiveRecordプロジェクト。たとえば、Cucumberには、トランザクションの各シナリオをラップするRailsワールド が付属しています。これは素晴らしいですが、非レールプロジェクトでActiveRecordを使用している場合はどうですか? あなたは必要なコードをコピーアンドペーストする を持っていたが、DatabaseCleanerであなたは 今言うことができる:

#1 env.rb

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

は今、あなたが言うことができますあなたの機能を実行するには、 別のプロセスが関与する必要があります(つまり、アプリケーションの サーバーに対してSeleniumが実行されている必要があります)。

#1 env.rb

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

あなたは両方の長所を持っているし、仕事のために最良のものを使用することができます。

#1 env.rb

require 'database_cleaner' 
require 'database_cleaner/cucumber' 

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

偉大な、否定的な投票とコメントはありません。あなたが好きなら、次回はgoogleで答えを見つけてください – fuzzyalej

関連する問題