Я пытаюсь заставить тесты работать после перехода с Webrat на Capybara. Когда я пытаюсь войти в приложение, я получаю сообщение об ошибке «Неверное имя пользователя/пароль», несмотря на то, что только что создал пользователя на фабрике с помощью factory_girl. Насколько я понимаю, пользователь должен сохраняться на протяжении всего приспособления, верно?
заводы.рб:
Factory.define :user do |user|
user.firstname "Test"
user.lastname "Test"
user.email "[email protected]"
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 = ложь
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
Как я могу проверить это дальше? Спасибо.