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 me donne maintenant l'erreur: strong> p> Y a-t-il un moyen de faire cela par bloc de test dans les rails 3 avec RSPEC 2? P> P>
3 Réponses :
Vous pouvez désactiver les appareils transactionnels globalement en mettant 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 P > config.use_transactional_fixtures = false code> 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. P>
RSpec.configure do |config| config.use_transactional_fixtures = true end
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 code> ou
décrivez le bloc code>. 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 code> au lieu de
true code>.
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 p> Je l'ai essayé avec des rails 3.0.7 avec RSPEC 2.6.3 et a l'air de travailler. P> p>
Agréable. J'ai constaté que vous pouvez également le mettre au début d'un bloc de contexte code> code>, 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 =.) Code>. Cependant,
self.use_transactional_tests = false code> fonctionne juste bien.
Oups. c'est mauvais. Ensuite, je dois trouver une solution de contournement lorsque je passe à des rails 5 ... merci.
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.