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 或任何其他框架。我使用的数据库是 PostgreSQL 9.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 回答