Похоже, проблема в том, чтобы активировать 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 , но указатель на хеш , поэтому мы можем проверить после вызова action , изменился ли hash :
# my_test.rb (in your test block)
session = {}
get '/', {}, 'rack.session' => session
assert_equal 'value', session[:key]