2010-10-20 8 views
0

Nous avons un projet Ruby on Rails 2.3.8, où les données sont presque exclusivement en lecture seule. Nous souhaitons écrire des tests d'acceptation utilisant la base de données de transfert (copie de la base de données de production)Utilisation de concombre avec base de données de transfert sans troncature et transactions

Nous ne souhaitons donc pas utiliser les transactions ou la troncation des tables de base de données avant ou après les fonctions et les scénarios.

Est-ce possible?

+0

Êtes-vous conf en utilisant du concombre et rspec? –

+0

J'utilise rspec et capybara pour les tests d'intégration, et ils fonctionnent très bien comme ils le sont. Pour les tests d'acceptation, je voudrais utiliser le concombre, et en raison de la complexité des données réelles, je veux utiliser la base de données de transit – dimus

Répondre

0

Ma solution était de passer DatabaseCleaner à la stratégie de nettoyage transaction caractéristiques/support/env.rb

if defined?(ActiveRecord::Base) 
    begin 
    require 'database_cleaner' 
    DatabaseCleaner.strategy = :transaction 
    rescue LoadError => ignore_if_database_cleaner_not_present 
    end 
end 

Et patch singe DatabaseCleaner en ajoutant des fonctionnalités/support/database_cleaner_patch.rb avec

module DatabaseCleaner::ActiveRecord 
    #for now we will disable transactions 
    class Transaction 

    def start 
    end 

    def clean 
    end 
    end 
end 

Nous avons 3 bases de données dans notre projet, avec des requêtes inter-base de données afin que nous ne puissions pas utiliser les transactions, sinon je ne voudrais pas patch singe DatabaseCleaner

Questions connexes