Я пытаюсь заставить тесты работать после перехода с Webrat на Capybara.Когда я пытаюсь войти в приложение, я получаю сообщение об ошибке «Неверное имя пользователя / пароль», несмотря на то, что создал пользователя на фабрике с помощью factory_girl.Насколько я понимаю, пользователь должен сохраняться для всего устройства, верно?
factories.rb:
Factory.define :user do |user|
user.firstname "Test"
user.lastname "Test"
user.email "test@test.com"
user.password "testtest"
user.password_confirmation "testtest"
end
layout_links.spec.rb:
describe "LayoutLinks" do
before(:each) do
wrong_user = Factory(:user)
integration_sign_in(wrong_user)
end
it "should have a dashboard page" do
get '/dashboard'
page.should have_css('h1', :text => "Navigation#dashboard")
end
spec_helper.rb
def integration_sign_in(user)
visit signin_path
fill_in :email, :with => user.email
fill_in :password, :with => user.password
click_button "Sign in"
puts page.body
end
Также в spec_helper.rb есть следующее:
config.use_transactional_fixtures = false
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
Не должен ли пользователь сохранятьсяа потом быть успешным в функции integration_sign_in
?Я все еще могу правильно войти через браузер в среде разработки, в которой есть пользователь, и вход в систему корректно работал с webrat до миграции, поэтому я не уверен, что и думать.Спасибо!
ОБНОВЛЕНИЕ: похоже, что сессия не идет на сервер правильно.На сервере, когда я проверяю значение адреса электронной почты и пароля в сеансе, значения неверны:
puts "Post Email: " + params[:session][:email]
puts "Post Password: " + params[:session][:password]
переменная электронной почты имеет переменную пароля, а переменная пароля не имеет значения.С чего бы это?Тест интеграции клиента правильно отображает поля:
fill_in :email, :with => user.email
fill_in :password, :with => user.password
Как я могу проверить это дальше?Спасибо.