12
votes

Rails 3 et RSPEC 2 désactive les appareils transactionnels pour des tests individuels

Je suis en train de mettre à niveau mon application à des rails 3. J'ai commencé à utiliser RSPEC 2 avec des rails 3. Je dois désactiver les appareils de transaction pour certains de mes tests RSPEC. Avant, j'ai utilisé le code suivant dans mes spécifications de modèle xxx

me donne maintenant l'erreur: xxx

Y a-t-il un moyen de faire cela par bloc de test dans les rails 3 avec RSPEC 2?


2 commentaires

Dupliqué possible de éteindre les appareils transactionnels pour une spécification avec RSPEC 2


Cela ne semble pas être dupliqué. ils sont juste liés.


3 Réponses :


0
votes

Vous pouvez désactiver les appareils transactionnels globalement en mettant config.use_transactional_fixtures = false sur la spécification SPEC_HELPER.RB. Si vous souhaitez les contrôler par test (par exemple, utilisez transactionnel juste sur certains d'entre eux), vous pouvez définir ce comportement avec DatabaseCleaner.

J'ai eu un problème connexe lors de tester des pages avec JavaScript sur le navigateur (un scénario qui ne fonctionne pas avec les appareils transactionnels). Voici comment j'ai réussi à contourner autour de lui: http://github.com/lailonbm/contact_manager_app


0 commentaires

0
votes
RSpec.configure do |config|
  config.use_transactional_fixtures = true
end

2 commentaires

Cela n'a pas fonctionné. Je mets ceci auparavant (: tous) et cela ne semble pas fonctionner. Je reçois toujours cette erreur qui est généralement résolue en éteignant les appareils transactionnels pour le test. Pgerror: Erreur: définir le niveau d'isolation de la transaction doit être appelé avant toute requête


Vous devez mettre ce code en dehors de tout : tous ou décrivez le bloc . Le fichier SPEC_HELPER.RB est un bon endroit si vous voulez la définir globalement. Et je pense que David a voulu dire false au lieu de true .



22
votes

Je cherche la réponse à cette question, est tombée sur Cette entrée de blog

Il suggère de déclarer dans le bloc de décrire xxx

Je l'ai essayé avec des rails 3.0.7 avec RSPEC 2.6.3 et a l'air de travailler.


4 commentaires

Agréable. J'ai constaté que vous pouvez également le mettre au début d'un bloc de contexte , et il ne s'appliquera qu'aux tests à l'intérieur.


Fonctionne juste bien (et de la même manière) avec des rails 3.2.2 et un mini-test 2.5.1


MISE À JOUR: L'utilisation de ceci donne maintenant l'avertissement AVERTISSEMENT DE L'AVERTISSEMENT: UTILISE_TRANSACTIONAL_FIXTURES = est obsolète et sera supprimée des rails 5.1 (Utilisez UTILISATION_TRANSACTIONAL_TESTS =.) . Cependant, self.use_transactional_tests = false fonctionne juste bien.


Oups. c'est mauvais. Ensuite, je dois trouver une solution de contournement lorsque je passe à des rails 5 ... merci.