1

J'écris un test en utilisant RSpec et FactoryGirl. Dans mes modèles DataMappers ont été utilisés. Ici, dans RSpec Je teste la mise à jour deux méthodes et la fonction d'index de mon contrôleur où j'utilise deux objets A, B et C. Je les ai créés à l'aide factorygirl comme suit:Utilisation de DataBase Cleaner gem avec DataMapper

before(:each) do 
    @A = FactoryGirl.create(:A) 
    @B = FactoryGirl.create(:B) 
    @C = FactoryGirl.create(:C) 
end 

Maintenant, je veux les nettoyer après chaque test avec DataBase Cleaner Gem. J'ai cherché dans Google, mais la plupart des articles parlent de la façon d'utiliser Gem Cleaner DataBase avec ActiveRecord mais aucun d'eux ne précise clairement comment utiliser DataBaseCleaner gem avec DataMapper. Donc, si quelqu'un me donne un petit exemple de fichier RSpec avec nettoyeur DataBase où DataMapper ont été utilisés, je serai vraiment reconnaissant. Merci d'avance.

+0

Mais ce qui se passe lorsque vous implémentez de la façon régulière, comme indiqué dans les exemples? Théoriquement, il devrait supporter les stratégies de transaction et de troncation avec DataMapper. – Kristiina

Répondre

2

d'abord, assurez-vous que vous avez dm transactions dans votre Gemfile ainsi que database_cleaner et avez besoin à la fois dans votre aide de spécifications:

require 'dm-transactions' 
require 'database_cleaner' 

Ensuite, il vous suffit de configurer DatabaseCleaner utiliser DataMapper avec la ligne suivante dans votre aide spec:

DatabaseCleaner[:data_mapper].strategy = :transaction 

Vous pouvez maintenant utiliser quelque chose de semblable à cela dans vos spécifications pour laisser DatabaseCleaner savoir quand les transactions commencent et quand nettoyer:

before :each do 
    DatabaseCleaner.start 
end 

after :each do 
    DatabaseCleaner.clean 
end 

Plus de détails sur readme DatabaseCleaner: https://github.com/bmabey/database_cleaner