1

Railsアプリにキュウリを使用してBDDを記述していますが、「キュウリ」の実行中に問題が発生します

テスト用のデータベースは「test_db」です。cucumber features / my_Feature_file.featureを実行すると、シナリオが成功または失敗したことが示されますが、データベースもクリーンアップされます。

私はきゅうりの初心者です。したがって、キュウリを実行するとデータベースがクリーンアップされることがテストのデフォルトであると教えてください。たとえば、ユーザーログイン用にBDDを記述している場合、レコードがない場合、ユーザーが有効かどうかを手順で確認するにはどうすればよいですか?

使ってます:

Gemfile(テスト用)-

group :test do
  gem 'ZenTest'
  gem 'autotest-rails'
  gem 'autotest-growl'
  gem 'selenium'
  gem 'selenium-client'
  gem 'capybara'
  gem 'database_cleaner'
  gem 'cucumber-rails'
  gem 'cucumber'
  gem 'rspec-rails'
  gem 'spork'
  gem 'xpath'
  gem 'launchy'
  gem 'cucumber-sinatra'
  gem 'webrat'
end

features / support / env.rb-

require 'cucumber/rails'
Capybara.default_selector = :css
ActionController::Base.allow_rescue = false

begin
  DatabaseCleaner.strategy = :transaction
  #DatabaseCleaner.strategy = nil
rescue NameError
  raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end

Cucumber::Rails::Database.javascript_strategy = :truncation

私は使ってみました:

DatabaseCleaner.strategy = nil

Cucumber :: Rails :: World.use_transactional_fixtures = false

誰かが私の混乱を取り除き、私を正しい道に導くことができますか?ヘルプは大歓迎です。

4

2 に答える 2

1

データベースを消去したくない場合は、Gemfile から database_cleaner gem を削除し、env.rb ファイルを消去するだけです。

ただし、保持することを強くお勧めします。各シナリオで DB をリセットするポイントは、既存のデータ条件によるものではなく、元の設定から機能が機能することを証明することです。

すべてのシナリオは、他のシナリオから独立している必要があります。

于 2013-03-05T15:16:47.760 に答える
0

使用したくない場合は、使用する必要はありません。私たちのプロジェクトにはありません。use_transactional_fixturesこれも使いたくない場合は設定する必要はありません。

これを使用する場合は、新しいユーザーを登録し、このユーザーを使用してログインとログアウトを確認することで、機能テストを開始できます。テストが実行されると、ユーザーは最後にDatabaseCleanerによって削除されます。

于 2013-03-05T11:05:36.937 に答える