Изменения отката, созданные модульным тестом Minitest - PullRequest
4 голосов
/ 30 ноября 2011

Я пишу тестовый пример в 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 Ответ

1 голос
/ 30 ноября 2011

Это должно работать (требуется сиквел 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
...