Plongez dans les transactions de base de données dans RSpec – The Startup
Si tu utilises rails-rspec
, par défaut, la configuration suivante est activée dans spec/rails_helper.rb
.
Ça signifie « exécuter chaque exemple dans une transaction« , c’est à dire. toutes les modifications de la base de données au cours d’un exemple serait annulées à la fin de cet exemple.
But wait… Comment peut «transactionnel agencements » mener à « exécuter chaque exemple dans une transaction« ?
Après avoir creusé la base de code de Rails 4 pour voir ce qu’il fait vraiment derrière la scène, voici ce que j’ai trouvé.
Appels Rails
begin_transaction
pour chaque connexion à la base de données tout ensetup_fixtures
Appels Rails
rollback_transaction
pour chaque connexion à la base de données tout enteardown_fixtures
Cela signifie également s’il y a plusieurs bases de données utilisé dans votre application, des transactions sont créées pour chacun d’eux.