Тест с Rspec, используя сессию sinatra - PullRequest
3 голосов
/ 12 марта 2010

У меня есть приложение sinatra, использующее сеанс. Как мне проверить страницу, которая использует сеанс?

Я использую Rspec + sinatra

Tks

Ответы [ 3 ]

1 голос
/ 06 января 2016

На этой странице показана основная проблема сеанса тестирования с rspec и sinatra.

Основная проблема в том, что переменная session недоступна из тестового кода. Чтобы решить эту проблему, он предлагает (и я подтверждаю) добавить линии охоты на spec/spec_helper.rb:

def session
  last_request.env['rack.session']
end

Он сделает доступным объект сессионного сеанса из последнего запроса в тестовом коде.

Вот мой код контроллера, который читает параметр code и сохраняет его значение в session:

post '/step2callback' do
  session['code'] = params['code']
end

Тогда вот тестовый код:

context "making an authentication" do
  before do
    post "/step2callback", code: "code_sample"
  end
  it "reads the param code and saves it at session" do
    expect(session['code']).to eq("code_sample")
  end  
end
0 голосов
/ 14 февраля 2011

Мне удалось заставить его работать, только отключив сеансы для тестовой среды. Это сообщение в блоге имеет хороший пример: http://benprew.posterous.com/testing-sessions-with-sinatra

0 голосов
/ 17 марта 2010

То же, что и на всех других страницах.

Вам необходимо уточнить свой вопрос. В чем проблема с сеансом тестирования. Если проблема заключается в том, что пользователь должен войти в систему, то вы можете использовать что-то вроде этого в spec-файле:

before :each do
  post "/login", {:username => "myuser", :password => "mypass"}
end

, который будет регистрировать вас перед каждым тестом.

...