13

私は自分のアプリケーションを Rails 3 にアップグレードしている最中です。Rails 3 で Rspec 2 を使い始めました。いくつかの rspec テストでトランザクション フィクスチャをオフにする必要があります。以前は、モデル仕様で次のコードを使用していました

 before(:all) do
    ActiveSupport::TestCase.use_transactional_fixtures = false
  end

  after(:all) do
    ActiveSupport::TestCase.use_transactional_fixtures = true
    clean_engine_database
  end

それは今私にエラーを与えます:

 Failure/Error: ActiveSupport::TestCase.use_transactional_fixtures = false
     undefined method `use_transactional_fixtures=' for ActiveSupport::TestCase:Class

Rspec 2 で Rails 3 のテスト ブロックごとにこれを行う方法はありますか?

4

3 に答える 3

23

この質問に対する答えを探しています。このブログ エントリに出会いました。

describe ブロック内で宣言することをお勧めします

describe "xxx" do
  self.use_transactional_fixtures = false
  ...

Rails 3.0.7 と RSpec 2.6.3 で試してみたところ、動作しているようです。

于 2011-06-01T00:22:28.963 に答える
0
RSpec.configure do |config|
  config.use_transactional_fixtures = true
end
于 2010-10-13T00:40:17.257 に答える
0

config.use_transactional_fixtures = falsespec_helper.rbを配置することで、トランザクション フィクスチャをグローバルに無効にすることができます。それらをテストで制御したい場合 (たとえば、それらの一部だけでトランザクションを使用するなど)、DatabaseCleaner でこの動作を設定できます。

ブラウザーで JavaScript を使用してページをテストするときに、関連する問題が発生しました (トランザクション フィクスチャでは機能しないシナリオ)。これを回避する方法は次のとおりです。http://github.com/lailsonbm/contact_manager_app

于 2010-10-13T00:28:08.133 に答える