Meine Tests funktionieren einwandfrei, wenn ich sie einzeln teste,
rake cucumber FEATURE = 'Pfad/zum/Feature'
aber wenn ich versuche,
rake cucumber
zu starten, schlagen sie mit dem folgenden Fehler fehl
undefined method `password_confirmation=' for # (NoMethodError)
Dies tritt auf, wenn ich versuche, einen Benutzer mit Factory.build(:user) zu erstellen. Ich habe eine Datei mit Fabriken, die einen :user definiert.
Ich weiß nicht wirklich, wie ich das bestätigen soll, aber es ist, als ob authlogic nicht vorhanden ist und das Benutzermodell die hinzugefügten Methoden noch nicht hat. Wenn ich die Benutzermethoden anschaue (User.new.methods.include?("password_confirmation=")) zum Zeitpunkt, wenn die Fabrik versucht einen neuen Benutzer zu erstellen, gibt es eine nach diesem Namen benannte Methode.
Ich habe viel dazu recherchiert, und ich sehe nichts dazu, also gehe ich davon aus, dass es etwas anderes ist, was ich tue.
BEARBEITEN:
Etwas mehr Information - Ich konnte das in einem einfachen Fall reproduzieren:
------- .feature
Background:
Given user "Bad Admin" with email address "badmin@gmail.com" and password "password" exists with "admin" credentials
Given user "Good Admin" with email address "goodadmin@gmail.com" 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