Рельсы Капибара Проблемы - PullRequest
2 голосов
/ 16 апреля 2011

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

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

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

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

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

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

0 голосов
/ 17 апреля 2011

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

...