Rails tour 3 et 2 Rspec hors appareils transactionnels pour les tests individuels
-
29-09-2019 - |
Question
Je suis en train de mettre à jour mon application Rails 3. j'utilise Rspec 2 avec Rails 3. Je besoin d'éteindre les appareils transactionnels pour certains de mes tests rspec. Avant je le code suivant dans mes spécifications du modèle
before(:all) do
ActiveSupport::TestCase.use_transactional_fixtures = false
end
after(:all) do
ActiveSupport::TestCase.use_transactional_fixtures = true
clean_engine_database
end
Cela me donne maintenant l'erreur:
Failure/Error: ActiveSupport::TestCase.use_transactional_fixtures = false
undefined method `use_transactional_fixtures=' for ActiveSupport::TestCase:Class
Est-il possible de le faire par bloc de test dans Rails 3 avec 2 Rspec?
La solution
Je cherche la réponse à cette question, suis tombé sur cette entrée de blog
Il suggère de déclarer à l'intérieur du bloc décrivent
describe "xxx" do
self.use_transactional_fixtures = false
...
Je l'ai essayé avec Rails 3.0.7 avec RSpec 2.6.3, et ressemble à travailler.
Autres conseils
RSpec.configure do |config|
config.use_transactional_fixtures = true
end
Vous pouvez désactiver les appareils transactionnels au niveau mondial en mettant config.use_transactional_fixtures = false
sur le spec_helper.rb. Si vous voulez les contrôler par le test (par exemple l'utilisation transactionnelle juste sur certains d'entre eux), vous pouvez définir ce comportement avec DatabaseCleaner.
J'ai eu un problème lié lors du test de pages avec javascript sur le navigateur (un scénario qui ne fonctionne pas avec les appareils transactionnels). Voici comment je réussi à travailler autour: http://github.com/lailsonbm/contact_manager_app