Ruby 回滚由minitest单元测试创建的更改

Ruby 回滚由minitest单元测试创建的更改,ruby,minitest,Ruby,Minitest,我正在用Minitest编写一个测试用例,创建一个数据库条目。测试运行后,应该回滚测试所做的所有更改。实现这一目标的好方法是什么 require 'minitest/autorun' require 'rubygems' require 'sequel' require 'factory_girl' class TestPostgresqlFunctions < MiniTest::Unit::TestCase def test_simple_function Factory

我正在用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
要求“小型测试/自动运行”
需要“rubygems”
需要“续集”
需要“工厂女孩”
类TestPostgresqlFunctions
使用此代码,创建的条目将保留在数据库中。我没有使用Rails或任何其他框架。我使用的数据库是PostgreSQL 9.1。

这应该可以工作(需要Sequel 3.29.0或更高版本):

#将此类用作测试的基类
类TestCase:always){super}
结束
结束

这似乎会立即回滚所有后续事务。我想要的是在测试(minitest)完成后回滚所有事务。这将在其自己的事务中运行每个测试。如果您想在自己的事务中运行每个测试套件,可能有一个单独的方法可以覆盖。阅读MiniTest源代码。似乎我在测试您的解决方案时犯了一个错误。它工作得很好。谢谢!
# 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