D'après tout ce que j'ai lu sur Rails 5.1 nouvelles spécifications du système, j'ai compris que Rails gère désormais les transactions de base de données en interne).
From Rspec's blog : "[auparavant] vos tests et votre code sous test ne peuvent pas partager une transaction de base de données, et vous ne pouvez donc pas utiliser le mécanisme intégré de RSpec pour annuler les modifications de la base de données, nécessitant plutôt un joyau comme un nettoyeur de base de données . Avec les tests du système, l'équipe Rails a fait le gros travail pour s'assurer que ce n'est pas le cas, et vous pouvez donc utiliser en toute sécurité le mécanisme de RSpec, sans avoir besoin d'une gemme supplémentaire. "
Mon expérience est différente:
Rails_helper.rb
. Les tests JS échouent maintenant en raison de validates uniqueness
les erreurs. Les tests non JS réussissent.Mes tests sont très simples.
let(:subject) { page }
let(:user) { create :user, name: "TestUser" }
it "displays the user page", :js do
visit user_path(user)
it is_expected.to have_content "TestUser"
end
Avec le nettoyeur de base de données désactivé et :js => true
Je reçois user named TestUser already exists
. Avec :js => false
le test réussit.
Quelle est la situation actuelle avec les tests système et rspec? Rails gère-t-il les transactions de base de données en interne, ou est-ce que Database Cleaner est toujours requis? Quelqu'un l'a-t-il rencontré ou peut-il me diriger vers des informations pertinentes?
Vous n'avez pas besoin de la gem DatabaseCleaner. Voici un bref résumé des étapes dont vous avez besoin:
capybara-Selenium
bijou et database_cleaner
bijouSelenium-webdriver
bijouRails_helper
fichier, définissez config.use_transactional_fixtures = true
config.include Devise::Test::IntegrationHelpers, type: :system
basic_configure
fichier selon cet article par Noel Rappin .RSpec.feature
partout avec RSpec.describe
.Voir ce commit pour plus de détails sur la façon dont j'ai géré le commutateur. C'était un problème, mais j'espère plus facile maintenant que la version 5.1.5 a corrigé le problème ActionDispatch :: SystemTesting :: Server (j'ai dû corriger le fichier en 5.1.4, mais vous n'aurez pas à le faire maintenant).