ошибка stringify_keys после добавления переменных сеанса в функциональные тесты - PullRequest
1 голос
/ 08 сентября 2011

Я нахожусь в процессе обновления до Rails 3.1.0 с 3.0.10, и я использую Devise для аутентификации.

У меня есть ряд функциональных тестов, которые требуют от меня установить одинпеременная сеанса.Вещи в соответствии с:

test "new clears current_lesson_id from session" do
  get :new, nil, {'current_lesson_id' => '234234'}
  assert_response :success
  assert_nil session[:current_lesson_id]
end

Это не удалось, так как моя информация о сеансе забивала данные сеанса аутентификации devise, поэтому мое предыдущее решение заключалось в слиянии с сеансом по умолчанию:

test "new clears current_lesson_id from session" do
  get :new, nil, authenticated_sesion_with({'current_lesson_id' => '234234'})
  assert_response :success
  assert_nil session[:current_lesson_id]
end

def authenticated_session_with(hash)
  session.merge(hash)
end

Все это работало нормально с рельсами 3.0.10 (с надзором 1.0.4 и разработкой 1.4.2), но больше не с рельсами 3.1.0 (и надзирателем 1.0.5, разработкой 1.4.4).Теперь я получаю следующую ошибку:

NoMethodError: private method `stringify_keys' called for <ActionController::TestSession:0x000001060db590>

Я понял, это потому, что объект 'session' является экземпляром ActionController :: TestSession, а в rails 3.1.0 есть куча переменных экземпляраэто не может и не должно быть «строковым».

Как мне правильно получить доступ к пользовательской информации устройства (желательно динамически), чтобы я мог добавить 'current_lesson_id' и т. д .?

Спасибомного,

Ответы [ 2 ]

0 голосов
/ 21 августа 2012

Я думаю, тебе лучше сделать:

def valid_session
    my_session_values = {:some_key => :some_value}
    session.to_hash.merge my_session_values
end
0 голосов
/ 20 октября 2011

попробуйте исправить ошибку в Rails 3.1

  sign_in user
  hashy = session['warden.user.user.key'][2]
  get :action, nil, {"warden.user.user.key"=>["User", [user.id],hashy]}, nil

работал для меня. Кажется, не нравится новый способ, которым Rails обрабатывает TestSessions.

...