Мои тесты работают нормально, когда я тестирую их по отдельности,
rake cucumber FEATURE = 'path/to/feature'
но когда я пытаюсь запустить
rake cucumber
Они терпят неудачу со следующей ошибкой
undefined method `password_confirmation=' for #<User:0x1069545f0> (NoMethodError)
Это происходит, когда я пытаюсь создать пользователя с помощью Factory.build (: user). У меня есть файл фабрики, который определяет: пользователь.
Я действительно не знаю, как это подтвердить, но как будто authlogic отсутствует, а модель User пока не имеет добавленных методов. Когда я смотрю на методы User (User.new.methods.include? ("Password_confirmation =")) в то время, когда Фабрика пытается создать нового пользователя, существует метод, определенный этим именем.
Я много искал по этому вопросу, и я не вижу ничего связанного, поэтому я предполагаю, что это что-то еще, что я делаю.
EDIT:
Немного больше информации - я смог воспроизвести это в простом случае:
------- .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
---- фабрики.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