Pour toute personne utilisant les before(:all) crochets, sachez que ces crochets sont exécutées avant la transaction associés à l'appareil est ouvert. Cela signifie que toutes les données créées par l'avant(:all) crochets ne sera pas annulée par transactionnelle luminaires. Vous pouvez en lire plus dans la RSpec documentation.
Je voulais juste parler, parce que j'ai était un peu par elle et mon premier réflexe a été de saut à la Base de données de plus propre (qui finissent pas d'être nécessaire, et finalement pas de travail).
Merci! Super réponse! C'est un non-évident RSpec gotcha pour vous.
Vous voulez DatabaseCleaner, mais vous pouvez trouver que les :truncation stratégie est un peu trop lent à l'exécution de tous les temps. Il est vraiment nécessaire que pour les tests d'intégration, de sorte que vous pouvez le faire:
# spec/spec_helper.rb
require 'database_cleaner'
config.before(:suite)doDatabaseCleaner.clean_with :truncation
DatabaseCleaner.strategy =:transaction
end
config.before(:each)do|group|# The strategy needs to be set before we call DatabaseCleaner.startcase group.example.metadata[:type]when:feature
DatabaseCleaner.strategy =:truncation
elseDatabaseCleaner.strategy =:transaction
endDatabaseCleaner.start
end
config.after(:each)doDatabaseCleaner.clean
end# spec/features/your_feature_spec.rb
require 'spec_helper'
describe "An integration test",:type =>:feature doend# spec/model/your_model_spec.rb
require 'spec_helper'
describe "A unit test"doend
Évidemment, cela s'applique uniquement si vous êtes en train de faire des tests d'intégration avec RSpec directement contre les faire avec du Concombre.
aucune méthode nommée exemple sur le groupe Dans rspec 3.4, Nous pouvons vérifier par group.metadata[:type]
Je pense que https://github.com/bmabey/database_cleaner est ce que vous avez besoin.
OriginalL'auteur mikewilliamson
Pour toute personne utilisant les
before(:all)
crochets, sachez que ces crochets sont exécutées avant la transaction associés à l'appareil est ouvert. Cela signifie que toutes les données créées par l'avant(:all) crochets ne sera pas annulée par transactionnelle luminaires. Vous pouvez en lire plus dans la RSpec documentation.Je voulais juste parler, parce que j'ai était un peu par elle et mon premier réflexe a été de saut à la Base de données de plus propre (qui finissent pas d'être nécessaire, et finalement pas de travail).
OriginalL'auteur TMcManemy
Regardez ici pour un tutoriel: http://railscasts.com/episodes/257-request-specs-and-capybara
Il décrit la Base de données de plus propre en plus de Rspec et le Capybara
Il est, voir ma réponse ici: stackoverflow.com/questions/5916126/...
OriginalL'auteur apneadiving
Vous voulez DatabaseCleaner, mais vous pouvez trouver que les
:truncation
stratégie est un peu trop lent à l'exécution de tous les temps. Il est vraiment nécessaire que pour les tests d'intégration, de sorte que vous pouvez le faire:Évidemment, cela s'applique uniquement si vous êtes en train de faire des tests d'intégration avec RSpec directement contre les faire avec du Concombre.
Dans rspec 3.4, Nous pouvons vérifier par
group.metadata[:type]
OriginalL'auteur Bob Aman
Comment préparer une base de données de test(s) pour les Rails des tests rspec sans courir râteau spec?
Ma réponse il y a peut être d'intérêt pour vous. c'est une belle solution. Pour votre cas, vous auriez probablement besoin de quelque chose comme
OriginalL'auteur Danyel
Il y a deux façons de le faire:
Si vous optez pour l'option 1: En haut du fichier spec, après:
Ajouter:
Qui va faire reculer les transactions après chaque exemple.
2.Si vous souhaitez le configurer à l'échelle mondiale, puis, dans la spec_helper.rb.rb
OriginalL'auteur Abraham