2

mysql のロックを防ぐためにトランザクションをオフにする必要がある thinking-sphinx テストがいくつかありますが、そうすると、以前に作成した他の多くのテストが壊れてしまうため、設定を切り替えることができる必要があります。

rspecに関する同様の質問を見つけましたが、 Test::Unit についてはありません。

self.use_transactional_fixtures = false私は、スフィンクスのテストに合格することを可能にするものを試しましたが、他のものを壊す原因となります. 他のすべてのテストでそれを true に設定できると確信していますが、他のすべてのテストにもコード スニペットを含める必要があり、面倒です。

も試しuses_transaction :test_method_nameましたが、前述の方法と同じように機能します。

助けてくれてありがとう。

4

2 に答える 2

4

あなたが持っているスフィンクス関連のテストだけのために use_transactional_fixtures を false に設定できるはずですが、あなたが持っている他のテストでは true のままにしておいてください。重要なのは、テストを別々のテスト クラスに分割することです。したがって、test_helper.rb には次のものが含まれます。

self.use_transactional_fixtures = true

しかし、他のテストでは、次のようなことを行います

class PostTest < ActiveSupport::TestCase
  # your normal post tests that require transactional fixtures
end

class SphinxRelatedPostTest < ActiveSupport::TestCase
  self.use_transactional_fixtures = false
  # your other tests
end

これは、通常のテストが高速トランザクション フィクスチャを使用して実行されることを意味するはずですが、レールは必要に応じて DELETE / INSERT メソッドを使用します。

于 2010-10-29T22:41:53.250 に答える