Похоже, что проблема на самом деле иметь enable :sessions
активирован.
Вы должны деактивировать эту настройку, чтобы быть доступной, чтобы перезаписать сеанс .
Решение может быть:
# my_test.rb (first line, or at least before you require your 'my_app.rb')
ENV['RACK_ENV'] = 'test'
# my_app.rb (your sinatra application)
enable :sessions unless test?
# my_test.rb (in your test block)
get '/', {}, 'rack.session' => { :key => 'value' }
В другой стороны, чтобы иметь возможность проверить любой сеанса изменения, что действие, как ожидается, мы можем послать а не хэш к rack.session, но указатель на хэш, поэтому мы можем проверить после действие позвонить, если хэш изменен:
# my_test.rb (in your test block)
session = {}
get '/', {}, 'rack.session' => session
assert_equal 'value', session[:key]
Почему вы не используете сеанс [: foo] = 'bla'? Ознакомьтесь с документацией Sinatra. – Philip 2010-12-09 21:00:21
Вы когда-нибудь находили решение для этого? Я в том же беспорядке, и я пробовал свой путь, а также предлагаемые решения ниже. Ничего не работает. – Mika 2011-07-13 18:22:48