2010-03-12 5 views
2

나는 세션을 사용하여 sinatra appliction을 사용하고 있는데, 세션을 사용하는 페이지를 테스트하려면 어떻게해야합니까? 세션을 사용하여 Rspec 테스트 sinatra

나는 다른 모든 페이지와 같은

+0

난 당신이 랙 :: 시험 (또는 무언가를 사용한다고 생각은 그 위에 Capybara와 같은) 세션 인식 코드를 테스트하려면 – froderik

답변

0

같은 RSpec에 +시나

TKS를 사용하여.

질문을 명확히해야합니다. 테스트 세션의 문제점은 무엇입니까? 문제는 해당 사용자 인 경우, 당신은 스펙 파일에서이 같은 것을 사용할 수 로그인해야합니다

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

각 시험 전에 로그온 할 것이다.

0

This page, 쇼 rspecsinatra와 테스트 세션의 주요 문제가있다 :이 블로그 게시물은 좋은 사례가있다.

주요 문제는 변수 session에 테스트 코드에서 액세스 할 수 없다는 것입니다. 이를 해결하기 위해, spec/spec_helper.rb에서 fowling 라인을 추가 할 수는 제안 (내가 확인) :

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

그것은 테스트 코드에서 마지막 요청에서 액세스 할 수있는 조롱 세션 객체를 만들 것입니다.

여기 읽어 내 컨트롤러 코드가 code PARAM 그리고 저장의 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 
관련 문제