2012-03-18 12 views
4

私はRuby on Rails 3.2.2、cucumber-rails-1.3.0、rspec-rails-2.8.1およびcapybara-1.1.2を使用しています。 JavaScriptをテストするためにSeleniumを使用しますが、端末のウィンドウでcucumberコマンドラインを実行するたびにtestデータベースのデータを削除する必要はありません。つまり、次のような機能を指定すると、`test`データベースのデータを削除せずにJavaScriptをテストするには?

Feature: ... 

    @javascript 
    Scenario: ... 

JavaScriptが正常に動作することが確認されています。ただし、テストが実行された後、testデータベースデータが削除され、新しいテストを適切に実行するために、そのデータベースを再度シードする必要があります。

ROOT_APP/features/support/env.rbファイルにあるOfficial Documentationとそのテキストを読んでいます(必要なすべてのRuby宝石がインストールされているようです - 使用しているGemfileの詳細については下記を参照してください)。データベースのデータを削除し、CucumberとCapybaraの宝石をどのように設定してSeleniumと正しく動作するようにしますか?

どうすればよいですか?

注I:私は同じtestデータベースのデータI「テスト」/「実行」シナリオがしたいので、私は上記のようにしたいと思います。

注II:(私のアプリケーションは、データが動作することを必要とする)testデータベース内のデータをシードするために、私はRAILS_ROOT_PATH/lib/tasks/cucumber.rakeファイルに次のコードを追加して、私は、ターミナルウィンドウからrake db:test:prepareコマンドラインを実行します。私は、元のファイルの自動生成cucumber-rails GEMによって変わったことがないので、それは:私は1つ、コードの次のブロックの両方(BTWコメントを解除しようとROOT_APP/features/support/env.rbファイルで

namespace :db do 
    namespace :test do 
    task :prepare => :environment do 
     Rake::Task["db:seed"].invoke 
    end 
    end 
end 

テストを実行した後も、testのデータベースデータは削除されます。

# Before('@no-txn,@selenium,@culerity,@celerity,@javascript') do 
#  # { :except => [:widgets] } may not do what you expect here 
#  # as tCucumber::Rails::Database.javascript_strategy overrides 
#  # this setting. 
#  DatabaseCleaner.strategy = :truncation 
# end 
# 
# Before('[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]') do 
#  DatabaseCleaner.strategy = :transaction 
# end 

Gemfileの抜粋:

group :development, :test do 
    gem "rspec-rails" 
end 

group :test do 
    gem 'cucumber-rails' 
    gem 'database_cleaner' 
    gem 'capybara' 
end 

答えて

3

私はこの同じ問題に遭遇した、と

Cucumber::Rails::Database.javascript_strategy = :truncation 
から ROOT_APP/features/support/env.rb

に以下の行を変更することにより、それを修正するために管理

Cucumber::Rails::Database.javascript_strategy = :transaction 

から0は、この情報がお役に立てば幸いです...

関連する問題