4

私はデータベースエントリを作成する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やその他のフレームワークを使用していません。私が使用しているデータベースはPostgreSQL9.1です。

4

1 に答える 1

1

これは機能するはずです(Sequel 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
于 2011-11-30T18:29:43.013 に答える