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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top