2013-04-18 2 views
1

Я пишу некоторые спецификации запросов (rspec 2.13.1) и хотел бы получить прямой доступ к сеансовому хэшу. Я думаю, что это синтаксис возможен в спецификациях контроллера, но не уверен, что это можно сделать в спецификациях запросов.Спецификации запросов и значения сеанса Rspec

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

Я получаю следующее сообщение об ошибке:

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)>' 

я видел следующий вопрос Access session hash in request spec, но не уверен, если это точно.

ТНХ заранее

+0

Является ли тестовый код скопированной ошибкой? У вас нет строки 'session' внутри тестового блока. –

ответ

1

Есть несколько небольших ошибок

  1. Вы должны описать api_controller
  2. значения переменного для запросов должно быть в пределах ранее (: каждый) блок.
  3. Вы им не хватает it блок
  4. Если файл не помещается в спецификации/контроллеров, необходимо указать, что это испытание контроллер с :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'? –

Смежные вопросы