rollback changements apportés par les tests unitaires minitest
Question
J'écris un test en Minitest qui crée une entrée de la base de données. Après le test est exécuté, toutes les modifications que le test ne devrait être annulée. Qu'est-ce qu'un bon moyen d'y parvenir?
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
Avec ce code, l'entrée créée restera dans la base de données. Je ne suis pas en utilisant Rails ou tout autre cadre. La base de données que je utilise est PostgreSQL 9.1.
La solution
Cela devrait fonctionner (nécessite Sequel 3.29.0 ou plus):
# 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow