Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rspec请求规范和会话值_Rspec_Rspec2 - Fatal编程技术网

Rspec请求规范和会话值

Rspec请求规范和会话值,rspec,rspec2,Rspec,Rspec2,我正在编写一些请求规范(rspec2.13.1),并希望直接访问会话散列。我认为这在控制器规范中是可能的,但不确定这是否可以在请求规范中实现 describe 'Api' do let(:user) { FactoryGirl.create(:user) } session[:auth_token]=user.auth_token 我得到以下错误: Failure/Error: session[:auth_token]=user.auth_token

我正在编写一些请求规范(rspec2.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)>'  
失败/错误:会话[:auth\u令牌]=user.auth\u令牌│将(2层)锁定在顶层'
命名错误:│/Users/jt/.rvm/gems/ruby-1.9.3-p392/gems/rake-10.0.4/lib/rake/application.rb:101:in`e
nil:NilClass的未定义方法“session”│ach'
#./spec/requests/api_spec.rb:7:in'block(2层)in'
我看到了下面的问题,但不确定这是否准确


thx提前

有几个小错误

  • 您应该描述api_控制器
  • 请求的变量分配应在before(:each)块内
  • 您缺少
    it
  • 当文件未放置在spec/controllers中时,您需要指定它是一个带有
    :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
    

    有几个小错误

  • 您应该描述api_控制器
  • 请求的变量分配应在before(:each)块内
  • 您缺少
    it
  • 当文件未放置在spec/controllers中时,您需要指定它是一个带有
    :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
    

    在使用
    :request
    规范类型时,有意将会话数据访问排除在规范之外。一般来说,这是因为它不应该直接测试。如果要访问会话数据,则需要使用较旧的
    :controller
    类型。

    在使用
    :request
    规范类型时,会话数据访问被故意排除在规范之外。一般来说,这是因为它不应该直接测试。如果要访问会话数据,需要使用较旧的
    :controller
    类型。

    测试代码是否为复制粘贴错误?测试块中没有
    会话
    行。测试代码是复制粘贴错误吗?测试块中没有
    会话
    行。@GrantBirchmeier似乎在列出的点中出现了不幸的换行。调整。谢谢。我有一个疑问:为什么设置为
    :type=>controller
    ?不可能是
    :type=>request
    ?@RodrigoChaves我相信可能是这样的,尽管我不能证实这一点。在过去的几年里,测试结构发生了变化。@GrantBirchmeier似乎在列出的点内出现了不幸的断线。调整。谢谢。我有一个疑问:为什么设置为
    :type=>controller
    ?不可能是
    :type=>request
    ?@RodrigoChaves我相信可能是这样的,尽管我不能证实这一点。在过去几年中,测试结构发生了变化。