我正在编写一些请求规范(rspec 2.13.1),并希望直接访问会话哈希。我认为这是控制器规范中的语法,但不确定是否可以在请求规范中完成。
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 :(得分:1)
有几个小错误
it
阻止: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
答案 1 :(得分:0)
使用:request
规范类型时,有意将会话数据访问排除在规范之外。通常,这是因为不应直接对其进行测试。如果要访问会话数据,则需要使用较旧的:controller
类型。