J'essaie d'exécuter un test Capybara 1.0 sur mon application Rails 3 pour tester si un utilisateur clique sur un lien de confirmation, il est effectivement confirmé.Rails 3/Capybara n'enregistre pas les attributs du modèle
Maintenant, cela fonctionne réellement quand je le teste manuellement. De plus, comme vous pouvez le voir, il y a une ligne put @ user.confirmed que je mets dans la méthode confirm pour déboguer ceci, et elle imprime vrai quand j'exécute le test. Cependant, le test lui-même échoue.
Il semble que l'attribut confirmé dans mon modèle utilisateur ne soit pas retenu par le test après l'exécution de la méthode du contrôleur.
Qu'est-ce qui me manque? Merci beaucoup d'avance.
Test:
it "should allow a user to be confirmed after clicking confirmation link" do
fill_in('user_email', :with => '[email protected]')
click_button('Submit')
@user = User.find_by_email('[email protected]')
@user.confirmed.should be_false
visit confirm_path(@user.confirmation_code)
@user.confirmed.should be_true
end
méthode Contrôleur:
def confirm
@confirmation_code = params[:confirmation_code]
@user = User.find_by_confirmation_code(@confirmation_code)
@website = @user.website
@user.confirm
if @user.referrer_id
User.find(@user.referrer_id).increment_signups
end
flash[:success] = "Thanks for signing up!"
flash[:user_show] = @user.id
puts @user.confirmed
redirect_to "http://" + @website.domain_name
end
méthode modèle utilisateur:
def confirm
self.confirmed = true
self.save
end
Oui! Maintenant, le test fonctionne. Merci beaucoup pour votre réponse rapide et précise! – Rebitzele