私は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