2013-03-15 23 views
4

我有一個Rails 4應用程序,並且使用事務夾具,並且希望我的after_commit掛鉤在運行我的集成規範時觸發。在啓用事務夾具的情況下測試Rails 4中的after_commit掛鉤

當然,沒有實際提交發生在您使用事務賽程,所以在Rails 3中有這個補丁:https://gist.github.com/charleseff/1305285,並將其製作成寶石:「test_after_commit」

軌道4改變的內部active_record足夠使Rails 3補丁無法移植。

有沒有人在Rails 4中解決了這個問題?

回答

3

我解決了這個通過將以下代碼規格/支持/助理/ test_after_commit.rb

require 'active_record/connection_adapters/abstract/transaction' 
module ActiveRecord 
    module ConnectionAdapters 
    class SavepointTransaction < OpenTransaction 
     def perform_commit_with_transactional_fixtures 
     commit_records if number == 1 
     perform_commit_without_transactional_fixtures   
     end 

     alias_method_chain :perform_commit, :transactional_fixtures 
    end 
    end 
end 

https://gist.github.com/cmaitchison/5168104

+1

我認爲現在創業板與導軌4太的作品。 – 2013-11-19 15:49:37

+0

只是供參考:猴子補丁停止使用Rails 4.2。因爲他們改變了ActiveRecord :: ConnectionAdapters :: SavepointTransaction的內部。 – beanie 2015-01-13 09:09:52

+0

有沒有Rails 4.2的解決方案? – sunnyrjuneja 2015-04-08 18:33:43

相關問題