2013-04-18 2 views
1

일부 요청 사양 (rspec 2.13.1)을 작성 중이며 세션 해시에 직접 액세스하려고합니다. 이 구문은 컨트롤러 사양에서 가능하지만 이것이 요청 사양에서 수행 될 수 있는지 확실하지 않다고 생각합니다. 나는 다음과 같은 질문 Access session hash in request spec 그러나 이것은 정확 확실하지 보았다Rspec 요청 사양 및 세션 값

Failure/Error: session[:auth_token]=user.auth_token        │lock (2 levels) in top_level'               
NoMethodError:                 │/Users/jt/.rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/application.rb:101:in `e 
    undefined method `session' for nil:NilClass         │ach'                     
# ./spec/requests/api_spec.rb:7:in `block (2 levels) in <top (required)>' 

:

describe 'Api' do 
    let(:user) { FactoryGirl.create(:user) } 
    session[:auth_token]=user.auth_token 

나는 다음과 같은 오류가 발생합니다. 사전에

들으

+0

테스트 코드에 복사 붙여 넣기 오류가 있습니까? 테스트 블록 안에'session' 행이 없습니다. –

답변

1

당신이 요청에 대한

  • 변수 할당이 전에 내되어야 api_controller를 설명해야 몇 가지 작은 실수

    1. 있습니다 (각) 블록. 파일이 사양/컨트롤러 내에 배치되어 있지 않은 경우
    2. 당신은 it 블록
    3. 을 부족, 당신은 여기 :type => :controller

    와 컨트롤러 테스트가 그 예이다 것을 지정해야합니다

    require 'spec_helper' 
    
    describe ApiController, :type => :controller do 
        let(:user) { FactoryGirl.create(:user) } 
    
        before :each do 
        session[:auth_token]=user.auth_token 
        end 
    
        it 'should do something' do 
        get :index 
        response.status.should_not eq 401 
        end 
    end 
    
  • +0

    "2.".... 무엇을위한 변수 할당? –

    +0

    @GrantBirchmeier 나열된 포인트 내에 불행한 줄 바꿈이있는 것처럼 보입니다. 조정 됨. 고맙습니다. – scones

    +0

    의심 스럽습니다 : 왜': type => controller'로 설정 했습니까? 그것은': type => request' 일 수 없습니까? –

    관련 문제