Mes tests fonctionnent bien quand je les tester individuellement,méthode non définie 'password_confirmation' pour l'utilisateur: Test Authlogic avec concombre et Factory Girl
rake cucumber FEATURE = 'path/to/feature'
mais quand je tente d'exécuter
rake cucumber
Ils échouent avec l'erreur suivante
undefined method `password_confirmation=' for #<User:0x1069545f0> (NoMethodError)
Cela apparaît lorsque j'essaie de créer un utilisateur à l'aide de Factory.build (:utilisateur). J'ai un fichier d'usines qui définit un: utilisateur.
Je ne sais pas vraiment comment confirmer cela, mais c'est comme si authlogic n'est pas présent et le modèle utilisateur n'a pas encore les méthodes ajoutées. Quand je regarde les méthodes d'utilisateur (User.new.methods.include? ("Password_confirmation =")) au moment où l'usine essaye de construire un nouvel utilisateur, il y a une méthode définie par ce nom.
J'ai fait beaucoup de recherches sur ce sujet, et je ne vois rien de lié, donc je suppose que c'est autre chose que je fais.
EDIT:
Un peu plus d'informations - Je suis en mesure de reproduire cela dans un cas simple:
------- .feature
Background:
Given user "Bad Admin" with email address "[email protected]" and password "password" exists with "admin" credentials
Given user "Good Admin" with email address "[email protected]" and password "password" exists with "edit" credentials
Scenario: valid log in with authorization
When I go to the login page
Scenario: invalid login
When I go to the login page
- - factories.rb
Factory.define :user do |u|
u.first_name "Arthur"
u.last_name "Dent"
u.email { Factory.next(:user_email) }
u.password "default"
u.password_confirmation "default"
end
---- steps.rb
Given /^user "([^"]*)" with email "([^"]*)", password "([^"]*)" and credentials "([^"]*)" exists$/ do |name, email, password, role|
names = name.split(' ')
user = Factory(:user, :first_name => names.first, :last_name => names.last, :email => email, :password => password, :password_confirmation => password)
user.has_role! role.downcase.gsub(' ', '_')
end
Hi Voidy - Ceci est un code très utile pour configurer concombre et authlogic. Dans mon cas, je n'ai pas de vue d'enregistrement, les utilisateurs sont créés d'une autre manière. Ces utilisateurs sont essentiellement des administrateurs, ils ont donc été créés par une console ou une tâche rake. Ils ont été créés par User.create (: username => '...',: password => '...',: password_confirmation => '...'. Je pourrais créer une interface utilisateur pour cela, mais Je préférerais ne pas - je voudrais comprendre pourquoi cette approche fonctionne quand une fonction est exécutée individuellement, mais pas quand ils sont exécutés en séquence. – Swards