Проблемы с Rails Capybara

Я пытаюсь заставить тесты работать после перехода с 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

Как я могу проверить это дальше? Спасибо.


person skaz    schedule 16.04.2011    source источник


Ответы (2)


Так что это сработало для меня

fill_in "Email", :with => user.email
fill_in "Password", :with => user.password

тогда как использование символов не удалось

person noli    schedule 18.04.2011
comment
представляет интерес для последователей Rails Tutorial 1e, пытающихся сбросить webrat - person prusswan; 10.02.2012

Похоже, сессия не шла на сервер правильно. Я не уверен, как объяснить это.

person skaz    schedule 16.04.2011
comment
Я только что воссоздал вашу проблему со своей стороны, когда использовал символы в fill_in вместо строк... однако для меня строки тоже все еще не работают. Как ты это починил? - person noli; 18.04.2011
comment
на самом деле строки работают нормально... я путаю свои тестовые и dev dbs - person noli; 18.04.2011