3

私はカピバラのドキュメントを読んでいましたが、BDD の優れたツールですが、シナリオ間で状態をリセットする方法がわかりませんでした。

前/後のステップへの言及を見たことがありますが、シナリオではなく個々のステップ間に適用されるようです。このトピックに関する決定的なドキュメントをオンラインで見つけることができませんでした。

注: 私は Ruby 開発者ではなく、Capybara/Cucumber スタックだけに手を出しているため、Ruby テクノロジへの露出が制限されており、明らかな何かが欠けている可能性があります。

4

2 に答える 2

5

前/後のステップへの言及を見たことがありますが、それらはシナリオではなく個々のステップ間に適用されるようです

本当じゃない。ドキュメントを見てください:

Before フックは、各シナリオの最初のステップの前に実行されます。それらは、登録されているのと同じ順序で実行されます。

After フックは、失敗した、未定義の、保留中の、またはスキップされたステップがある場合でも、各シナリオの最後のステップの後に実行されます。

状態のクリーンアップに関しては、 database_cleanerなどのサードパーティの gemが役立つ場合があります。しかし、繰り返しますが、Before フックと After フックのみを使用して、gem に依存せずに状態をきれいにすることができます。

于 2013-09-05T07:45:05.257 に答える
0

状態に関しては、この他の SO の投稿についての種に回答しました。ここにコピーすると、個別のシナリオ テストが得られます。


これにシードを使用するかしないかについては、さまざまな考えがあります。

それぞれの個別のシナリオが機能するか機能しないかを知りたいのですが、それらの間に相互作用はありません。これにより、スイートの実行時間が長くなる可能性がありますが、別のシナリオが連鎖反応を引き起こさなかったことをテストで確信できます。したがって、私はこれにシードを使用することにしました。

私はsupport/seeds.rb内容を持っています:

Before do |scenario|
  load Rails.root.join('db/seeds.rb')
end

これを次のようなものと組み合わせたい場合があることに注意してください。

begin
  # start off entire run with with a full truncation
  #  DatabaseCleaner.clean_with :truncation, {:except => %w[plans]}
  DatabaseCleaner.clean_with :truncation
  # continue with the :transaction strategy to be faster while running tests.
  DatabaseCleaner.strategy = :transaction
rescue NameError
  raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end
于 2013-11-15T14:48:08.007 に答える