Les tests (RSpec) à Concevoir est confirmable module
C'est ma compréhension que les Rails de' environnement de test est démolie et reconstruite avant chaque test...alors, comment puis-je tester un contrôleur qui exige qu'un utilisateur soit connecté et que l'utilisateur ne peut pas être créé sans Appareil confirmable module de prendre le chemin?
Concevoir de méthode recommandée (ci-dessous) crée un nouvel utilisateur qui est ensuite envoyé un mail pour en Concevoir de confirmable
module. Comment puis-je contourner ce problème donc je ne suis pas "création" d'un utilisateur à chaque fois...ou si je suis, je peux obtenir un objet de test w/out "simuler" un nouvel e-mail pour chaque spec?
before(:each) do
@user = Factory.create(:user)
sign_in @user
end
Je suis sûr que j'donnant sur quelque chose de douloureusement évident que ce doit être un très commun de spécifications pour la personne à l'aide de Concevoir avec confirmable...
Vous devez vous connecter pour publier un commentaire.
Dans votre environnement de test
ActionMailer::Base.delivery_method
doit être réglé à:test
, ce qui signifie que ces e-mails ne seront pas envoyés. Si ce paramètre est réglé sur autre chose commesmtp
par le biais d'une configuration à direconfig/environments.rb
, les e-mails sera être envoyé.Si ce paramètre est déjà là, puis à utiliser la
User
objet (comme dans, à être effectivement en mesure de se connecter), vous aurez besoin d'appelerconfirm!
sur elle:before(:all)
bloc, pour l'accélérer...config.action_mailer.default_url_options = { :host => 'localhost:3000' }
pour obtenir les tests à exécuter...sinontest.rb
est réutilisable, à ma connaissance. Seuls les messages liés configs danstest.rb
ouenvironment.rb
est: "config.action_mailer.delivery_method = :test`.ActionMailer::Base.delivery_method = :test
différents d'une certaine manière à l'auto-générésconfig.action_mailer.delivery_method = :test
??@user.confirm!
sur le dossier avant d'essayer de faire quelque chose pour elle. Je vais mettre à jour ma réponse à cela.@user.confirm!
est utile et d'un pas dans la bonne direction! mais, cela ne fonctionne toujours pas que j'ai une nouvelle erreur cryptique:undefined method 'env' for nil:NilClass
pour les dernières FactoryGirl version:
Si vous utilisez factory_girl pour créer vos modèles, vous pouvez utiliser
after_create
afin de confirmer que chaque nouvel utilisateur.confirmed_at Time.now
comme une usine d'attribut.Aujourd'hui, il est juste mis:
confirmed_at 7.jours.il y a
sur votre fabrication
Pour Concevoir 4.2 il est maintenant
confirm
(pasconfirm!
).Source
Code ci-dessous empêche également les expéditeurs d'être générés grâce à
after(:build)
vsafter(:create)
pour la miseconfirmed_at
Essayer de buter
active?
Vous pourriez aussi avoir besoin de stub
confirmed?
, je ne suis pas trop familier avec les Concevoir.Pour la fabrication de bijou, il est
after_create
, pasafter_build
?