2010-10-29 29 views
0

我有一些思維獅身人面像測試,我需要關閉交易,以防止MySQL鎖,但在這樣做,我打破了以前寫很多其他測試,所以我需要能夠切換設置。如何使用Test :: Unit爲一組測試切換使用transactional_fixtures?

我發現了關於rspec的類似問題,但對於Test :: Unit沒有。

我試過self.use_transactional_fixtures = false這是什麼讓獅身人面像測試通過,但導致其他人打破。我確信我可以在所有其他測試中將其設置爲true,但是這也會要求所有其他測試都包含代碼段,這也很麻煩。

我也試過uses_transaction :test_method_name,但是它的工作方式與前面提到的方法相同。

在此先感謝您的幫助。

回答

4

您應該能夠將use_transactional_fixtures設置爲false,對於只是您擁有的獅身人面像相關測試,但在其他測試中保持不變。關鍵是將你的測試分成不同的測試類。因此,在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 

這應該意味着你的定期測試運行使用快速交易燈具,但rails會根據需要使用DELETE/INSERT方法。

+0

這就是我設置事物的方式,但是你說的是我在別處尋找問題的同樣的東西。事實證明,delayed_jobs表中有幾條記錄不斷將計數對比搞砸。謝謝您的幫助。 – chris 2010-10-30 04:49:47

0

您還可以使用uses_transaction爲特定方法/測試禁用它們。

class MyTest < ActiveSupport::TestCase 

    uses_transaction :test_something 
    test "something" do 
    "test something like callback" 
    end 

end 
相關問題