2011-11-30 51 views
4

我正在Minitest中編寫一個測試用例來創建數據庫條目。測試運行後,測試所做的所有更改應回滾。什麼是實現這一目標的好方法?由minitest單元測試創​​建的回滾更改

require 'minitest/autorun' 
require 'rubygems' 
require 'sequel' 
require 'factory_girl' 

class TestPostgresqlFunctions < MiniTest::Unit::TestCase 
    def test_simple_function 
    Factory.find_definitions 
    user = FactoryGirl.create(:user) 
    end 
end 

使用此代碼,創建的條目將保留在數據庫中。我沒有使用Rails或任何其他框架。我正在使用的數據庫是PostgreSQL 9.1。

回答

1

這應該工作(需要續集3.29.0或更高版本):

# Use this class as the base class for your tests 
class SequelTestCase < MiniTest::Unit::TestCase 
    def run(*args, &block) 
    Sequel::Model.db.transaction(:rollback=>:always){super} 
    end 
end 
+0

看來,如果這rollsback立即將所有續集的交易。我正在尋找的是在測試(minitest)完成後回滾所有事務。 – Hartwig

+0

這會在自己的事務中運行每個測試。如果你想在自己的事務中運行每個測試套件,可能會有一個單獨的方法來覆蓋。閱讀MiniTest源代碼。 –

+0

似乎我在測試解決方案時犯了一個錯誤。它完美的作品。非常感謝! – Hartwig